@radix-ng/primitives 1.0.0-beta.1 → 1.0.0-beta.2
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/fesm2022/radix-ng-primitives-accordion.mjs +2 -2
- package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-calendar.mjs +14 -1
- package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-checkbox.mjs +2 -2
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-collapsible.mjs +1 -1
- package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-combobox.mjs +1923 -0
- package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-context-menu.mjs +1 -1
- package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-core.mjs +480 -469
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-cropper.mjs +1 -1
- package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-date-field.mjs +11 -0
- package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dialog.mjs +1 -1
- package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-drawer.mjs +1 -1
- package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-editable.mjs +1 -1
- package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-field.mjs +86 -6
- package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-fieldset.mjs +1 -1
- package/fesm2022/radix-ng-primitives-fieldset.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-focus-scope.mjs +1 -1
- package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-form.mjs +207 -0
- package/fesm2022/radix-ng-primitives-form.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-input.mjs +85 -4
- package/fesm2022/radix-ng-primitives-input.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menu.mjs +4 -4
- package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menubar.mjs +1 -1
- package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-meter.mjs +1 -1
- package/fesm2022/radix-ng-primitives-meter.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs +1 -1
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-number-field.mjs +2 -2
- package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popover.mjs +1 -1
- package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popper.mjs +1 -1
- package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-preview-card.mjs +1 -1
- package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-progress.mjs +1 -1
- package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-roving-focus.mjs +1 -1
- package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-scroll-area.mjs +3 -3
- package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-select.mjs +421 -224
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-switch.mjs +3 -2
- package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tabs.mjs +1 -1
- package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-time-field.mjs +27 -3
- package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toast.mjs +1 -1
- package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle-group.mjs +1 -1
- package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toolbar.mjs +2 -2
- package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tooltip.mjs +2 -2
- package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
- package/package.json +9 -1
- package/schematics/ng-add/index.js +57 -0
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics/ng-add/schema.d.ts +1 -0
- package/schematics/ng-add/schema.json +6 -0
- package/types/radix-ng-primitives-combobox.d.ts +1265 -0
- package/types/radix-ng-primitives-core.d.ts +148 -56
- package/types/radix-ng-primitives-field.d.ts +71 -2
- package/types/radix-ng-primitives-form.d.ts +124 -0
- package/types/radix-ng-primitives-input.d.ts +75 -5
- package/types/radix-ng-primitives-select.d.ts +292 -132
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radix-ng-primitives-toast.mjs","sources":["../../../packages/primitives/toast/src/toast-provider.ts","../../../packages/primitives/toast/src/toast-swipe.ts","../../../packages/primitives/toast/src/toast-root.ts","../../../packages/primitives/toast/src/toast-action.ts","../../../packages/primitives/toast/src/toast-close.ts","../../../packages/primitives/toast/src/toast-content.ts","../../../packages/primitives/toast/src/toast-description.ts","../../../packages/primitives/toast/src/toast-portal.ts","../../../packages/primitives/toast/src/toast-positioner.ts","../../../packages/primitives/toast/src/toast-title.ts","../../../packages/primitives/toast/src/toast-viewport.ts","../../../packages/primitives/toast/index.ts","../../../packages/primitives/toast/radix-ng-primitives-toast.ts"],"sourcesContent":["import { computed, Directive, effect, inject, Injectable, input, Provider, signal } from '@angular/core';\nimport { RdxIdGenerator } from '@radix-ng/primitives/core';\nimport { RdxToastAddOptions, RdxToastObject, RdxToastPromiseOptions } from './toast.types';\n\n/** Default auto-dismiss delay (ms) applied when a toast omits `timeout`. */\nconst DEFAULT_TIMEOUT = 5000;\n/** Max number of toasts kept in the queue; the oldest is dropped past this. */\nconst DEFAULT_LIMIT = 3;\n\ninterface TimerState {\n /** Active `setTimeout` handle, or `null` while paused / not scheduled. */\n handle: ReturnType<typeof setTimeout> | null;\n /** Remaining time (ms) when paused. */\n remaining: number;\n /** Timestamp (ms) the current run started, for computing `remaining` on pause. */\n start: number;\n}\n\n/**\n * App-level coordinator and imperative API for toasts — the Angular counterpart of Base UI's\n * `<Toast.Provider>` plus `useToastManager()`. Holds the queue as a signal that `RdxToastViewport`\n * renders, owns each toast's auto-dismiss timer (pausable while the viewport is hovered/focused),\n * and exposes `add` / `update` / `close` / `promise`.\n *\n * Provide it once near the app root with {@link provideRdxToastManager} or the `[rdxToastProvider]`\n * directive, then inject `RdxToastManager` anywhere to push toasts.\n */\n@Injectable()\nexport class RdxToastManager {\n private readonly idGenerator = inject(RdxIdGenerator);\n\n private readonly _toasts = signal<RdxToastObject[]>([]);\n /** The live queue, oldest first. Render it in `RdxToastViewport` (e.g. via `@for`). */\n readonly toasts = this._toasts.asReadonly();\n\n /** Whether any toast is currently in the queue. */\n readonly hasToasts = computed(() => this._toasts().length > 0);\n\n private readonly _expanded = signal(false);\n /** Whether the stack is expanded (viewport hovered or focused) — drives `data-expanded`. */\n readonly expanded = this._expanded.asReadonly();\n\n private readonly _heights = signal<Record<string, number>>({});\n /** Measured heights (px) per toast id, reported by each `RdxToastRoot` for expanded-stack offsets. */\n readonly heights = this._heights.asReadonly();\n\n /**\n * Per-toast stacking metrics, computed once for the whole queue (front = newest, index `0`):\n * `index` is the distance from the front and `offsetY` is the combined height of the toasts\n * stacked in front. Roots read this by id instead of each rescanning the queue (O(n) vs O(n²)).\n */\n readonly layout = computed<Record<string, { index: number; offsetY: number }>>(() => {\n const list = this._toasts();\n const heights = this._heights();\n const result: Record<string, { index: number; offsetY: number }> = {};\n let offsetInFront = 0;\n for (let i = list.length - 1; i >= 0; i--) {\n const toast = list[i];\n result[toast.id] = { index: list.length - 1 - i, offsetY: offsetInFront };\n offsetInFront += heights[toast.id] ?? 0;\n }\n return result;\n });\n\n /** Max number of simultaneously visible toasts. Configurable via `[rdxToastProvider]`. */\n limit = DEFAULT_LIMIT;\n\n /** Default auto-dismiss delay (ms) for toasts that omit `timeout`. Set via `[rdxToastProvider]`. */\n defaultTimeout = DEFAULT_TIMEOUT;\n\n private readonly timers = new Map<string, TimerState>();\n /** Nested-pause depth so overlapping holds (hover + swipe) resume only when all release. */\n private pauseDepth = 0;\n\n /** Queue a new toast. Returns its id (generated when not supplied). */\n add<Data = unknown>(options: RdxToastAddOptions<Data>): string {\n const id = options.id ?? this.idGenerator.getId('rdx-toast-');\n const toast: RdxToastObject<Data> = {\n ...options,\n id,\n priority: options.priority ?? 'low',\n transitionStatus: 'starting'\n };\n\n // Re-adding an id that is mid-dismissal resurrects it rather than updating it: finish the\n // abandoned dismissal so its leave handler can't later remove the replacement, and its\n // `onRemove` still fires. (A same-id toast that is still open is a normal update — left alone.)\n const existing = this._toasts().find((t) => t.id === id);\n if (existing?.transitionStatus === 'ending') {\n this.clearTimer(id);\n existing.onRemove?.();\n }\n\n let evicted: RdxToastObject[] = [];\n this._toasts.update((toasts) => {\n const next = [...toasts.filter((t) => t.id !== id), toast as RdxToastObject];\n // Enforce the limit by dropping the oldest entries.\n const overflow = next.length - this.limit;\n if (overflow > 0) {\n evicted = next.slice(0, overflow);\n return next.slice(overflow);\n }\n return next;\n });\n\n // Fully retire evicted toasts (timer + height + callback), not just their timers.\n evicted.forEach((dropped) => {\n this.clearTimer(dropped.id);\n this.clearHeight(dropped.id);\n dropped.onRemove?.();\n });\n\n this.scheduleTimeout(toast);\n return id;\n }\n\n /** Merge new options into an existing toast (no-op if the id is unknown). */\n update<Data = unknown>(id: string, options: Partial<RdxToastAddOptions<Data>>): void {\n this._toasts.update((toasts) =>\n toasts.map((toast) => (toast.id === id ? { ...toast, ...options, id } : toast))\n );\n const toast = this._toasts().find((t) => t.id === id);\n if (toast) {\n this.scheduleTimeout(toast);\n }\n }\n\n /**\n * Begin dismissing a toast: fire `onClose`, then remove it after the leave animation.\n * Omit `id` to dismiss every toast at once (mirrors Base UI's `close()`).\n */\n close(id?: string): void {\n if (id === undefined) {\n this._toasts().forEach((toast) => this.close(toast.id));\n return;\n }\n\n const toast = this._toasts().find((t) => t.id === id);\n if (!toast) {\n return;\n }\n\n this.clearTimer(id);\n toast.onClose?.();\n\n this._toasts.update((toasts) => toasts.map((t) => (t.id === id ? { ...t, transitionStatus: 'ending' } : t)));\n }\n\n /**\n * Remove a toast from the queue immediately. `RdxToastRoot` calls this once its leave animation\n * has finished; call it directly only when there is no exit animation.\n */\n remove(id: string): void {\n const toast = this._toasts().find((t) => t.id === id);\n this.clearTimer(id);\n this._toasts.update((toasts) => toasts.filter((t) => t.id !== id));\n this.clearHeight(id);\n toast?.onRemove?.();\n }\n\n /** Toggle the expanded (hover/focus) state of the stack. Called by the viewport. */\n setExpanded(expanded: boolean): void {\n this._expanded.set(expanded);\n }\n\n /** Record a toast's measured height (px) for expanded-stack offset math. Called by each root. */\n setHeight(id: string, height: number): void {\n this._heights.update((heights) => (heights[id] === height ? heights : { ...heights, [id]: height }));\n }\n\n /** Pause every auto-dismiss timer (e.g. while the viewport is hovered, focused, or being swiped). */\n pauseAll(): void {\n if (this.pauseDepth++ > 0) {\n return;\n }\n const now = Date.now();\n this.timers.forEach((timer) => {\n if (timer.handle !== null) {\n clearTimeout(timer.handle);\n timer.remaining -= now - timer.start;\n timer.handle = null;\n }\n });\n }\n\n /** Release one pause; auto-dismiss timers resume only once every hold has released. */\n resumeAll(): void {\n if (this.pauseDepth === 0 || --this.pauseDepth > 0) {\n return;\n }\n const now = Date.now();\n this.timers.forEach((timer, id) => {\n if (timer.handle === null && timer.remaining > 0) {\n timer.start = now;\n timer.handle = setTimeout(() => this.close(id), timer.remaining);\n }\n });\n }\n\n /**\n * Drive a toast through a promise's lifecycle: show `loading`, then swap to `success` or\n * `error` copy when it settles. Returns the original promise for chaining.\n */\n async promise<Value, Data = unknown>(\n promise: Promise<Value>,\n options: RdxToastPromiseOptions<Value, Data>\n ): Promise<Value> {\n const id = this.add<Data>({ ...resolveCopy(options.loading), timeout: 0, loading: true });\n\n try {\n const value = await promise;\n this.update<Data>(id, { ...resolveCopy(options.success, value), loading: false, timeout: DEFAULT_TIMEOUT });\n return value;\n } catch (error) {\n this.update<Data>(id, { ...resolveCopy(options.error, error), loading: false, timeout: DEFAULT_TIMEOUT });\n throw error;\n }\n }\n\n private scheduleTimeout(toast: RdxToastObject): void {\n this.clearTimer(toast.id);\n\n const timeout = toast.timeout ?? this.defaultTimeout;\n if (timeout <= 0 || toast.loading) {\n return;\n }\n\n const timer: TimerState = { handle: null, remaining: timeout, start: Date.now() };\n if (this.pauseDepth === 0) {\n timer.handle = setTimeout(() => this.close(toast.id), timeout);\n }\n this.timers.set(toast.id, timer);\n }\n\n private clearTimer(id: string): void {\n const timer = this.timers.get(id);\n if (timer?.handle != null) {\n clearTimeout(timer.handle);\n }\n this.timers.delete(id);\n }\n\n private clearHeight(id: string): void {\n this._heights.update((heights) => {\n if (!(id in heights)) {\n return heights;\n }\n const next = { ...heights };\n delete next[id];\n return next;\n });\n }\n}\n\n/** Normalize a string-or-options promise-copy entry (optionally derived from the settled value). */\nfunction resolveCopy<Value, Data>(\n entry: RdxToastAddOptions<Data> | string | ((value: Value) => RdxToastAddOptions<Data> | string),\n value?: Value\n): RdxToastAddOptions<Data> {\n const resolved = typeof entry === 'function' ? entry(value as Value) : entry;\n return typeof resolved === 'string' ? { title: resolved } : resolved;\n}\n\n/** Provide a {@link RdxToastManager} for an app (e.g. in `app.config.ts`). */\nexport function provideRdxToastManager(): Provider[] {\n return [RdxToastManager];\n}\n\n/**\n * Hosts a {@link RdxToastManager} for its subtree. Put it on a wrapping element (or the app root)\n * so descendant viewports and components share one queue. `limit` caps simultaneously visible toasts.\n */\n@Directive({\n selector: '[rdxToastProvider]',\n exportAs: 'rdxToastProvider',\n providers: [RdxToastManager]\n})\nexport class RdxToastProvider {\n private readonly manager = inject(RdxToastManager);\n\n /** Max number of toasts shown at once. */\n readonly limit = input<number>(DEFAULT_LIMIT);\n\n /** Default auto-dismiss delay (ms) for toasts that omit their own `timeout`. `0` disables it. */\n readonly timeout = input<number>(DEFAULT_TIMEOUT);\n\n constructor() {\n // `limit` / `defaultTimeout` are plain fields on the manager; keep them in sync with inputs.\n effect(() => {\n this.manager.limit = this.limit();\n this.manager.defaultTimeout = this.timeout();\n });\n }\n}\n","import { assertInInjectionContext, DestroyRef, inject } from '@angular/core';\nimport { usePointerDrag } from '@radix-ng/primitives/core';\n\n/** Direction a swipe travels to dismiss a toast. */\nexport type RdxToastSwipeDirection = 'up' | 'down' | 'left' | 'right';\n\n/** Unit vectors per dismiss direction (screen coordinates: +y is down). */\nconst UNIT: Record<RdxToastSwipeDirection, { x: number; y: number }> = {\n up: { x: 0, y: -1 },\n down: { x: 0, y: 1 },\n left: { x: -1, y: 0 },\n right: { x: 1, y: 0 }\n};\n\n/** Default travel (px) past which a release dismisses. */\nconst DEFAULT_THRESHOLD = 45;\n/** Signed velocity (px/ms) toward the dismiss direction that flicks a toast away. */\nconst FLICK_VELOCITY = 0.3;\n/** iOS-style resistance when dragging opposite the dismiss direction. */\nconst RUBBER_BAND = 0.5;\n\nexport interface RdxToastSwipeConfig {\n /** The toast element the gesture lives on (CSS variables + data attributes are written here). */\n element: () => HTMLElement;\n /** Allowed dismiss directions; the gesture follows whichever the user drags toward most. */\n directions: () => RdxToastSwipeDirection[];\n /** Whether the gesture is armed (false while the toast is leaving). */\n enabled: () => boolean;\n /** Travel (px) past which a release dismisses. Defaults to {@link DEFAULT_THRESHOLD}. */\n threshold?: number;\n /** Called once per release that commits to dismissal. */\n onDismiss: (event: PointerEvent) => void;\n /** Called when a swipe actually begins (e.g. to pause auto-dismiss timers). */\n onPress?: () => void;\n /** Called when a started swipe ends, dismissing or not (balances {@link RdxToastSwipeConfig.onPress}). */\n onRelease?: () => void;\n}\n\n/**\n * Headless swipe-to-dismiss for a toast, built on the shared {@link usePointerDrag} lifecycle (which\n * owns pointer capture, the start threshold, window listeners, and tap/cancel handling). This layer\n * adds the toast-specific direction projection, rubber-banding, flick detection, and the styling\n * contract — it applies no transform itself:\n *\n * - `--toast-swipe-movement-x` / `--toast-swipe-movement-y` — signed px offset along the active axis.\n * - `[data-swiping]` — present while a gesture is active (drive `transition: none` off this).\n * - `[data-swipe-direction]` — the active direction.\n * - `[data-swipe-dismiss]` — present briefly when a release commits to dismissal.\n *\n * Mark inner interactive regions with `[data-toast-swipe-ignore]` to opt them out of the gesture.\n * `RdxToastRoot` (the gesture host) sets `touch-action: none` so a touch-drag is not stolen by native\n * scrolling — without it the gesture only works with a mouse, not on touch devices.\n * Must be called from an injection context (a directive constructor).\n */\nexport function useToastSwipe(config: RdxToastSwipeConfig): void {\n assertInInjectionContext(useToastSwipe);\n\n const el = () => config.element();\n const axisSize = (direction: RdxToastSwipeDirection | null) =>\n direction === 'left' || direction === 'right' ? el().offsetWidth : el().offsetHeight;\n\n const rubber = (distance: number, direction: RdxToastSwipeDirection | null) => {\n const size = axisSize(direction) || 1;\n return (1 - 1 / ((Math.abs(distance) * RUBBER_BAND) / size + 1)) * size;\n };\n\n let active = false;\n let startX = 0;\n let startY = 0;\n let direction: RdxToastSwipeDirection | null = null;\n let pending = 0;\n let lastProjected = 0;\n let lastTime = 0;\n let velocity = 0;\n\n const write = (offset: number, dir: RdxToastSwipeDirection | null) => {\n const unit = dir ? UNIT[dir] : { x: 0, y: 0 };\n const node = el();\n node.style.setProperty('--toast-swipe-movement-x', `${unit.x * offset}px`);\n node.style.setProperty('--toast-swipe-movement-y', `${unit.y * offset}px`);\n };\n\n /** Pick the allowed direction the drag points toward most, with its signed projection (px). */\n const project = (dx: number, dy: number) => {\n let best: RdxToastSwipeDirection | null = null;\n let bestProjection = 0;\n for (const dir of config.directions()) {\n const unit = UNIT[dir];\n const projection = dx * unit.x + dy * unit.y;\n if (projection > bestProjection) {\n bestProjection = projection;\n best = dir;\n }\n }\n return { direction: best, projection: bestProjection };\n };\n\n usePointerDrag({\n canStart: (event) => {\n if (!config.enabled()) {\n return false;\n }\n return !(event.target as Element | null)?.closest('[data-toast-swipe-ignore]');\n },\n onStart: (event) => {\n active = true;\n startX = event.clientX;\n startY = event.clientY;\n direction = null;\n pending = 0;\n lastProjected = 0;\n lastTime = event.timeStamp;\n velocity = 0;\n\n el().setAttribute('data-swiping', '');\n el().removeAttribute('data-swipe-dismiss');\n config.onPress?.();\n },\n onMove: (event) => {\n // Abort if the toast began leaving mid-drag; the end handler settles back.\n if (!config.enabled()) {\n return false;\n }\n\n const dx = event.clientX - startX;\n const dy = event.clientY - startY;\n const { direction: dir, projection } = project(dx, dy);\n\n if (dir) {\n direction = dir;\n }\n el().setAttribute('data-swipe-direction', direction ?? '');\n\n // Move freely toward the dismiss direction; resist dragging the other way.\n pending = projection >= 0 ? projection : -rubber(projection, direction);\n\n const dt = event.timeStamp - lastTime;\n if (dt > 0) {\n velocity = (projection - lastProjected) / dt;\n lastProjected = projection;\n lastTime = event.timeStamp;\n }\n\n write(pending, direction);\n return true;\n },\n onEnd: (event, committed) => {\n active = false;\n el().removeAttribute('data-swiping');\n\n const threshold = config.threshold ?? DEFAULT_THRESHOLD;\n const dismiss = committed && config.enabled() && (pending >= threshold || velocity >= FLICK_VELOCITY);\n\n if (dismiss) {\n el().setAttribute('data-swipe-dismiss', '');\n config.onDismiss(event);\n } else {\n // Settle home; the consumer's `transition` animates the snap-back.\n write(0, direction);\n }\n\n config.onRelease?.();\n direction = null;\n }\n });\n\n // usePointerDrag does not call onEnd when the host is destroyed mid-gesture; balance the onPress\n // that paused the timers so the manager doesn't stay paused forever.\n inject(DestroyRef).onDestroy(() => {\n if (active) {\n active = false;\n config.onRelease?.();\n }\n });\n}\n","import { computed, DestroyRef, Directive, effect, ElementRef, inject, Injector, input, signal } from '@angular/core';\nimport { createContext, elementSize, injectId } from '@radix-ng/primitives/core';\nimport { RdxToastManager } from './toast-provider';\nimport { RdxToastSwipeDirection, useToastSwipe } from './toast-swipe';\nimport { RdxToastObject } from './toast.types';\n\nexport interface RdxToastRootContext {\n /** The toast model this part tree renders. */\n readonly toast: () => RdxToastObject;\n /** `id` of the title element, wired to `aria-labelledby` once a title registers. */\n readonly titleId: string;\n /** `id` of the description element, wired to `aria-describedby` once a description registers. */\n readonly descriptionId: string;\n /** Register/unregister the title part so the root only points `aria-labelledby` at a real element. */\n readonly setTitlePresent: (present: boolean) => void;\n /** Register/unregister the description part so `aria-describedby` only targets a real element. */\n readonly setDescriptionPresent: (present: boolean) => void;\n /** Begin dismissing this toast. */\n readonly close: () => void;\n}\n\nexport const [injectRdxToastRootContext, provideRdxToastRootContext] =\n createContext<RdxToastRootContext>('RdxToastRootContext');\n\nconst rootContext = (): RdxToastRootContext => {\n const instance = inject(RdxToastRoot);\n return {\n toast: () => instance.toast(),\n titleId: instance.titleId,\n descriptionId: instance.descriptionId,\n setTitlePresent: (present) => instance.titlePresent.set(present),\n setDescriptionPresent: (present) => instance.descriptionPresent.set(present),\n close: () => instance.close()\n };\n};\n\n/**\n * A single toast — the Angular counterpart of `<Toast.Root>`. Bind the toast model from the\n * viewport's `@for`; this directive owns the announcement `role`, the `data-state` enter/leave\n * contract, swipe-to-dismiss, and the stacking variables consumers style against.\n *\n * Stacking / styling contract written to the host (no transform is applied for you):\n * - `--toast-index` — position from the front (`0` = frontmost).\n * - `--toast-height` — this toast's measured height (px).\n * - `--toast-offset-y` — combined height (px) of the toasts stacked in front, for expanded layout.\n * - `--toast-swipe-movement-x` / `--toast-swipe-movement-y` — live swipe offset (px).\n * - `[data-front]` — present on the frontmost toast.\n * - `[data-expanded]` — present while the viewport is hovered/focused.\n * - `[data-state]` — `open` while visible, `closed` once dismissal begins.\n * - `[data-swiping]` / `[data-swipe-direction]` / `[data-swipe-dismiss]` — gesture state.\n *\n * When the leave animation (driven by `data-state=\"closed\"`) ends, the toast leaves the queue.\n */\n@Directive({\n selector: '[rdxToastRoot]',\n exportAs: 'rdxToastRoot',\n providers: [provideRdxToastRootContext(rootContext)],\n host: {\n // Own the swipe gesture's touch behavior on the element usePointerDrag binds to. Without\n // touch-action:none a touch-drag is claimed by native scrolling (pointercancel fires before\n // the gesture starts), so swipe-to-dismiss works with a mouse but not on touch devices. The\n // toast surface never scrolls, so disabling pan/zoom here is safe; user-select stops text\n // selection mid-swipe. Mirrors number-field's scrub area.\n '[style.touch-action]': '\"none\"',\n '[style.user-select]': '\"none\"',\n '[style.-webkit-user-select]': '\"none\"',\n '[attr.role]': 'role()',\n '[attr.aria-labelledby]': 'titlePresent() ? titleId : undefined',\n '[attr.aria-describedby]': 'descriptionPresent() ? descriptionId : undefined',\n '[attr.data-state]': 'dataState()',\n '[attr.data-type]': 'toast().type ?? undefined',\n '[attr.data-front]': 'index() === 0 ? \"\" : undefined',\n '[attr.data-expanded]': 'manager.expanded() ? \"\" : undefined',\n '[style.--toast-index]': 'index()',\n '[style.--toast-height]': 'height() + \"px\"',\n '[style.--toast-offset-y]': 'offsetY() + \"px\"',\n '(animationend)': 'onAnimationEnd()'\n }\n})\nexport class RdxToastRoot {\n protected readonly manager = inject(RdxToastManager);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly injector = inject(Injector);\n\n /** The toast model to render — pass the item from the viewport's `@for`. */\n readonly toast = input.required<RdxToastObject>();\n\n /** Allowed swipe-to-dismiss directions. Accepts a single direction or a list. */\n readonly swipeDirection = input<RdxToastSwipeDirection | RdxToastSwipeDirection[]>(['down', 'right']);\n\n readonly titleId = injectId('rdx-toast-title-');\n readonly descriptionId = injectId('rdx-toast-description-');\n\n /** Whether a title / description part has registered, gating the aria-* references. */\n readonly titlePresent = signal(false);\n readonly descriptionPresent = signal(false);\n\n private readonly size = elementSize({ elementRef: this.elementRef, injector: this.injector });\n /** This toast's measured height (px). */\n readonly height = computed(() => this.size().height);\n\n /** Position from the front of the stack — `0` is the newest/frontmost toast. */\n readonly index = computed(() => this.manager.layout()[this.toast().id]?.index ?? 0);\n\n /** Combined height (px) of the toasts stacked in front of this one (for expanded layout). */\n readonly offsetY = computed(() => this.manager.layout()[this.toast().id]?.offsetY ?? 0);\n\n /** `alert` (assertive) for high-priority toasts, otherwise `status`. */\n readonly role = computed(() => (this.toast().priority === 'high' ? 'alert' : 'status'));\n\n /** `open` while visible, `closed` once dismissal begins — drives enter/leave animations. */\n readonly dataState = computed(() => (this.toast().transitionStatus === 'ending' ? 'closed' : 'open'));\n\n private readonly directions = computed<RdxToastSwipeDirection[]>(() => {\n const value = this.swipeDirection();\n return Array.isArray(value) ? value : [value];\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n // Mirror the measured height into the manager for the expanded-stack offset math.\n effect(() => {\n this.manager.setHeight(this.toast().id, this.size().height);\n });\n\n useToastSwipe({\n element: () => this.elementRef.nativeElement,\n directions: () => this.directions(),\n enabled: () => this.toast().transitionStatus !== 'ending',\n onDismiss: () => this.close(),\n onPress: () => this.manager.pauseAll(),\n onRelease: () => this.manager.resumeAll()\n });\n\n // Replay the enter animation on an upsert that bumps `updateKey`. The toast keeps the same\n // DOM node (tracked by id), so restart the running animation by clearing and re-reading it.\n let firstKey = true;\n effect(() => {\n this.toast().updateKey;\n if (firstKey) {\n firstKey = false;\n return;\n }\n const node = this.elementRef.nativeElement;\n node.style.animation = 'none';\n void node.offsetWidth; // force reflow so the animation can restart\n node.style.animation = '';\n });\n\n destroyRef.onDestroy(() => this.manager.setHeight(this.toast().id, 0));\n }\n\n close(): void {\n this.manager.close(this.toast().id);\n }\n\n protected onAnimationEnd(): void {\n // Remove from the queue only after the leave (\"closed\") animation completes.\n if (this.toast().transitionStatus === 'ending') {\n this.manager.remove(this.toast().id);\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectRdxToastRootContext } from './toast-root';\n\n/**\n * An action button inside a toast (e.g. \"Undo\"). Unlike {@link RdxToastClose} it does not dismiss\n * on its own — wire your handler with `(click)` and call `close()` from the exposed context when\n * the action should also close the toast.\n */\n@Directive({\n selector: '[rdxToastAction]',\n exportAs: 'rdxToastAction',\n host: {\n type: 'button'\n }\n})\nexport class RdxToastAction {\n /** The toast root context, so handlers can read the toast or dismiss it after acting. */\n readonly rootContext = injectRdxToastRootContext();\n}\n","import { Directive } from '@angular/core';\nimport { injectRdxToastRootContext } from './toast-root';\n\n/** Button that dismisses its toast. Put it on a native `<button>` for built-in semantics. */\n@Directive({\n selector: '[rdxToastClose]',\n exportAs: 'rdxToastClose',\n host: {\n type: 'button',\n '(click)': 'rootContext.close()'\n }\n})\nexport class RdxToastClose {\n protected readonly rootContext = injectRdxToastRootContext();\n}\n","import { Directive } from '@angular/core';\nimport { injectRdxToastRootContext } from './toast-root';\n\n/**\n * Wraps a toast's inner parts (title, description, actions) — the Angular counterpart of\n * `<Toast.Content>`. Headless: it carries no styles; consumers apply `overflow: hidden` to clip\n * taller toasts during the stack/expand animation. It mirrors the root's `data-state` so content\n * can transition together with the root.\n */\n@Directive({\n selector: '[rdxToastContent]',\n exportAs: 'rdxToastContent',\n host: {\n '[attr.data-state]': 'rootContext.toast().transitionStatus === \"ending\" ? \"closed\" : \"open\"'\n }\n})\nexport class RdxToastContent {\n protected readonly rootContext = injectRdxToastRootContext();\n}\n","import { DestroyRef, Directive, inject } from '@angular/core';\nimport { injectRdxToastRootContext } from './toast-root';\n\n/** Supporting body text for a toast; registers so `aria-describedby` only targets a real node. */\n@Directive({\n selector: '[rdxToastDescription]',\n exportAs: 'rdxToastDescription',\n host: {\n '[id]': 'rootContext.descriptionId'\n }\n})\nexport class RdxToastDescription {\n protected readonly rootContext = injectRdxToastRootContext();\n\n constructor() {\n this.rootContext.setDescriptionPresent(true);\n inject(DestroyRef).onDestroy(() => this.rootContext.setDescriptionPresent(false));\n }\n}\n","import { Directive } from '@angular/core';\nimport { RdxPortal } from '@radix-ng/primitives/portal';\n\n/**\n * Moves the toast viewport to a different part of the DOM — the Angular counterpart of\n * `<Toast.Portal>`. Defaults to `document.body`; pass `container` to target another element.\n */\n@Directive({\n selector: '[rdxToastPortal]',\n exportAs: 'rdxToastPortal',\n hostDirectives: [\n {\n directive: RdxPortal,\n inputs: ['container']\n }\n ]\n})\nexport class RdxToastPortal {}\n","import { Directive, inject } from '@angular/core';\nimport { provideRdxPopperContentConfig, RdxPopper, RdxPopperContentWrapper } from '@radix-ng/primitives/popper';\n\n/**\n * Positions an anchored toast against an element — the Angular counterpart of `<Toast.Positioner>`.\n * Composes the popper machinery so a toast can point at a trigger instead of living in the stack.\n *\n * Bind `anchor` (and optionally `side`/`align`/offsets) — typically from a toast's `positionerProps`.\n * It hosts its own `RdxPopper` so it is self-contained (no surrounding `rdxPopperRoot` needed), and\n * mirrors the popper measurements as friendlier CSS variables plus `data-side` / `data-align`.\n */\n@Directive({\n selector: '[rdxToastPositioner]',\n exportAs: 'rdxToastPositioner',\n providers: [\n provideRdxPopperContentConfig({\n side: 'top',\n sideOffset: 8,\n align: 'center',\n arrowPadding: 6,\n collisionPadding: 8,\n updatePositionStrategy: 'always'\n })\n ],\n hostDirectives: [\n RdxPopper,\n {\n directive: RdxPopperContentWrapper,\n inputs: [\n 'anchor',\n 'side',\n 'sideOffset',\n 'align',\n 'alignOffset',\n 'arrowPadding',\n 'avoidCollisions',\n 'collisionBoundary',\n 'collisionPadding',\n 'sticky',\n 'hideWhenDetached',\n 'positionStrategy',\n 'updatePositionStrategy'\n ]\n }\n ],\n host: {\n '[attr.data-side]': 'wrapper.placedSide()',\n '[attr.data-align]': 'wrapper.placedAlign()',\n '[attr.data-anchor-hidden]': 'wrapper.anchorHidden() ? \"\" : undefined',\n '[style.--toast-anchor-width]': '\"var(--radix-popper-anchor-width)\"',\n '[style.--toast-transform-origin]': '\"var(--radix-popper-transform-origin)\"'\n }\n})\nexport class RdxToastPositioner {\n protected readonly wrapper = inject(RdxPopperContentWrapper);\n}\n","import { DestroyRef, Directive, inject } from '@angular/core';\nimport { injectRdxToastRootContext } from './toast-root';\n\n/** Accessible title for a toast; registers so the root only points `aria-labelledby` at a real node. */\n@Directive({\n selector: '[rdxToastTitle]',\n exportAs: 'rdxToastTitle',\n host: {\n '[id]': 'rootContext.titleId'\n }\n})\nexport class RdxToastTitle {\n protected readonly rootContext = injectRdxToastRootContext();\n\n constructor() {\n this.rootContext.setTitlePresent(true);\n inject(DestroyRef).onDestroy(() => this.rootContext.setTitlePresent(false));\n }\n}\n","import { DestroyRef, Directive, effect, inject, signal } from '@angular/core';\nimport { RdxToastManager } from './toast-provider';\n\n/**\n * The positioned region that holds the visible toasts — the Angular counterpart of\n * `<Toast.Viewport>`. Exposes the queue for templates to render, and while it is hovered or focused\n * it expands the stack (`data-expanded` on each root) and pauses every auto-dismiss timer, resuming\n * once neither hover nor focus remains — matching Base UI.\n *\n * Headless: it carries no positioning styles. Consumers position it (e.g. fixed bottom-right) and\n * iterate `viewport.toasts()` with `@for`.\n */\n@Directive({\n selector: '[rdxToastViewport]',\n exportAs: 'rdxToastViewport',\n host: {\n role: 'region',\n tabindex: '-1',\n '(mouseenter)': 'hovered.set(true)',\n '(mouseleave)': 'hovered.set(false)',\n '(focusin)': 'focused.set(true)',\n '(focusout)': 'onFocusOut($event)'\n }\n})\nexport class RdxToastViewport {\n protected readonly manager = inject(RdxToastManager);\n\n /** The live toast queue to render. */\n readonly toasts = this.manager.toasts;\n\n protected readonly hovered = signal(false);\n protected readonly focused = signal(false);\n\n /** Tracks the last expanded state so pause/resume stay balanced across transitions. */\n private wasExpanded = false;\n\n constructor() {\n effect(() => {\n const expanded = this.hovered() || this.focused();\n this.manager.setExpanded(expanded);\n\n if (expanded && !this.wasExpanded) {\n this.wasExpanded = true;\n this.manager.pauseAll();\n } else if (!expanded && this.wasExpanded) {\n this.wasExpanded = false;\n this.manager.resumeAll();\n }\n });\n\n // If the viewport is destroyed while still expanded, balance the outstanding pause so a\n // longer-lived manager doesn't stay paused forever.\n inject(DestroyRef).onDestroy(() => {\n if (this.wasExpanded) {\n this.wasExpanded = false;\n this.manager.setExpanded(false);\n this.manager.resumeAll();\n }\n });\n }\n\n protected onFocusOut(event: FocusEvent): void {\n // Only clear focus when it actually leaves the viewport subtree.\n const next = event.relatedTarget as Node | null;\n const host = event.currentTarget as HTMLElement | null;\n if (!host || !next || !host.contains(next)) {\n this.focused.set(false);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxToastAction } from './src/toast-action';\nimport { RdxToastClose } from './src/toast-close';\nimport { RdxToastContent } from './src/toast-content';\nimport { RdxToastDescription } from './src/toast-description';\nimport { RdxToastPortal } from './src/toast-portal';\nimport { RdxToastPositioner } from './src/toast-positioner';\nimport { RdxToastProvider } from './src/toast-provider';\nimport { RdxToastRoot } from './src/toast-root';\nimport { RdxToastTitle } from './src/toast-title';\nimport { RdxToastViewport } from './src/toast-viewport';\n\nexport * from './src/toast-action';\nexport * from './src/toast-close';\nexport * from './src/toast-content';\nexport * from './src/toast-description';\nexport * from './src/toast-portal';\nexport * from './src/toast-positioner';\nexport * from './src/toast-provider';\nexport * from './src/toast-root';\nexport * from './src/toast-swipe';\nexport * from './src/toast-title';\nexport * from './src/toast-viewport';\nexport * from './src/toast.types';\n\nexport const toastImports = [\n RdxToastProvider,\n RdxToastPortal,\n RdxToastViewport,\n RdxToastPositioner,\n RdxToastRoot,\n RdxToastContent,\n RdxToastTitle,\n RdxToastDescription,\n RdxToastClose,\n RdxToastAction\n];\n\n@NgModule({\n imports: [...toastImports],\n exports: [...toastImports]\n})\nexport class RdxToastModule {}\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-toast.mjs","sources":["../../../packages/primitives/toast/src/toast-provider.ts","../../../packages/primitives/toast/src/toast-swipe.ts","../../../packages/primitives/toast/src/toast-root.ts","../../../packages/primitives/toast/src/toast-action.ts","../../../packages/primitives/toast/src/toast-close.ts","../../../packages/primitives/toast/src/toast-content.ts","../../../packages/primitives/toast/src/toast-description.ts","../../../packages/primitives/toast/src/toast-portal.ts","../../../packages/primitives/toast/src/toast-positioner.ts","../../../packages/primitives/toast/src/toast-title.ts","../../../packages/primitives/toast/src/toast-viewport.ts","../../../packages/primitives/toast/index.ts","../../../packages/primitives/toast/radix-ng-primitives-toast.ts"],"sourcesContent":["import { computed, Directive, effect, inject, Injectable, input, Provider, signal } from '@angular/core';\nimport { RdxIdGenerator } from '@radix-ng/primitives/core';\nimport { RdxToastAddOptions, RdxToastObject, RdxToastPromiseOptions } from './toast.types';\n\n/** Default auto-dismiss delay (ms) applied when a toast omits `timeout`. */\nconst DEFAULT_TIMEOUT = 5000;\n/** Max number of toasts kept in the queue; the oldest is dropped past this. */\nconst DEFAULT_LIMIT = 3;\n\ninterface TimerState {\n /** Active `setTimeout` handle, or `null` while paused / not scheduled. */\n handle: ReturnType<typeof setTimeout> | null;\n /** Remaining time (ms) when paused. */\n remaining: number;\n /** Timestamp (ms) the current run started, for computing `remaining` on pause. */\n start: number;\n}\n\n/**\n * App-level coordinator and imperative API for toasts — the Angular counterpart of Base UI's\n * `<Toast.Provider>` plus `useToastManager()`. Holds the queue as a signal that `RdxToastViewport`\n * renders, owns each toast's auto-dismiss timer (pausable while the viewport is hovered/focused),\n * and exposes `add` / `update` / `close` / `promise`.\n *\n * Provide it once near the app root with {@link provideRdxToastManager} or the `[rdxToastProvider]`\n * directive, then inject `RdxToastManager` anywhere to push toasts.\n */\n@Injectable()\nexport class RdxToastManager {\n private readonly idGenerator = inject(RdxIdGenerator);\n\n private readonly _toasts = signal<RdxToastObject[]>([]);\n /** The live queue, oldest first. Render it in `RdxToastViewport` (e.g. via `@for`). */\n readonly toasts = this._toasts.asReadonly();\n\n /** Whether any toast is currently in the queue. */\n readonly hasToasts = computed(() => this._toasts().length > 0);\n\n private readonly _expanded = signal(false);\n /** Whether the stack is expanded (viewport hovered or focused) — drives `data-expanded`. */\n readonly expanded = this._expanded.asReadonly();\n\n private readonly _heights = signal<Record<string, number>>({});\n /** Measured heights (px) per toast id, reported by each `RdxToastRoot` for expanded-stack offsets. */\n readonly heights = this._heights.asReadonly();\n\n /**\n * Per-toast stacking metrics, computed once for the whole queue (front = newest, index `0`):\n * `index` is the distance from the front and `offsetY` is the combined height of the toasts\n * stacked in front. Roots read this by id instead of each rescanning the queue (O(n) vs O(n²)).\n */\n readonly layout = computed<Record<string, { index: number; offsetY: number }>>(() => {\n const list = this._toasts();\n const heights = this._heights();\n const result: Record<string, { index: number; offsetY: number }> = {};\n let offsetInFront = 0;\n for (let i = list.length - 1; i >= 0; i--) {\n const toast = list[i];\n result[toast.id] = { index: list.length - 1 - i, offsetY: offsetInFront };\n offsetInFront += heights[toast.id] ?? 0;\n }\n return result;\n });\n\n /** Max number of simultaneously visible toasts. Configurable via `[rdxToastProvider]`. */\n limit = DEFAULT_LIMIT;\n\n /** Default auto-dismiss delay (ms) for toasts that omit `timeout`. Set via `[rdxToastProvider]`. */\n defaultTimeout = DEFAULT_TIMEOUT;\n\n private readonly timers = new Map<string, TimerState>();\n /** Nested-pause depth so overlapping holds (hover + swipe) resume only when all release. */\n private pauseDepth = 0;\n\n /** Queue a new toast. Returns its id (generated when not supplied). */\n add<Data = unknown>(options: RdxToastAddOptions<Data>): string {\n const id = options.id ?? this.idGenerator.getId('rdx-toast-');\n const toast: RdxToastObject<Data> = {\n ...options,\n id,\n priority: options.priority ?? 'low',\n transitionStatus: 'starting'\n };\n\n // Re-adding an id that is mid-dismissal resurrects it rather than updating it: finish the\n // abandoned dismissal so its leave handler can't later remove the replacement, and its\n // `onRemove` still fires. (A same-id toast that is still open is a normal update — left alone.)\n const existing = this._toasts().find((t) => t.id === id);\n if (existing?.transitionStatus === 'ending') {\n this.clearTimer(id);\n existing.onRemove?.();\n }\n\n let evicted: RdxToastObject[] = [];\n this._toasts.update((toasts) => {\n const next = [...toasts.filter((t) => t.id !== id), toast as RdxToastObject];\n // Enforce the limit by dropping the oldest entries.\n const overflow = next.length - this.limit;\n if (overflow > 0) {\n evicted = next.slice(0, overflow);\n return next.slice(overflow);\n }\n return next;\n });\n\n // Fully retire evicted toasts (timer + height + callback), not just their timers.\n evicted.forEach((dropped) => {\n this.clearTimer(dropped.id);\n this.clearHeight(dropped.id);\n dropped.onRemove?.();\n });\n\n this.scheduleTimeout(toast);\n return id;\n }\n\n /** Merge new options into an existing toast (no-op if the id is unknown). */\n update<Data = unknown>(id: string, options: Partial<RdxToastAddOptions<Data>>): void {\n this._toasts.update((toasts) =>\n toasts.map((toast) => (toast.id === id ? { ...toast, ...options, id } : toast))\n );\n const toast = this._toasts().find((t) => t.id === id);\n if (toast) {\n this.scheduleTimeout(toast);\n }\n }\n\n /**\n * Begin dismissing a toast: fire `onClose`, then remove it after the leave animation.\n * Omit `id` to dismiss every toast at once (mirrors Base UI's `close()`).\n */\n close(id?: string): void {\n if (id === undefined) {\n this._toasts().forEach((toast) => this.close(toast.id));\n return;\n }\n\n const toast = this._toasts().find((t) => t.id === id);\n if (!toast) {\n return;\n }\n\n this.clearTimer(id);\n toast.onClose?.();\n\n this._toasts.update((toasts) => toasts.map((t) => (t.id === id ? { ...t, transitionStatus: 'ending' } : t)));\n }\n\n /**\n * Remove a toast from the queue immediately. `RdxToastRoot` calls this once its leave animation\n * has finished; call it directly only when there is no exit animation.\n */\n remove(id: string): void {\n const toast = this._toasts().find((t) => t.id === id);\n this.clearTimer(id);\n this._toasts.update((toasts) => toasts.filter((t) => t.id !== id));\n this.clearHeight(id);\n toast?.onRemove?.();\n }\n\n /** Toggle the expanded (hover/focus) state of the stack. Called by the viewport. */\n setExpanded(expanded: boolean): void {\n this._expanded.set(expanded);\n }\n\n /** Record a toast's measured height (px) for expanded-stack offset math. Called by each root. */\n setHeight(id: string, height: number): void {\n this._heights.update((heights) => (heights[id] === height ? heights : { ...heights, [id]: height }));\n }\n\n /** Pause every auto-dismiss timer (e.g. while the viewport is hovered, focused, or being swiped). */\n pauseAll(): void {\n if (this.pauseDepth++ > 0) {\n return;\n }\n const now = Date.now();\n this.timers.forEach((timer) => {\n if (timer.handle !== null) {\n clearTimeout(timer.handle);\n timer.remaining -= now - timer.start;\n timer.handle = null;\n }\n });\n }\n\n /** Release one pause; auto-dismiss timers resume only once every hold has released. */\n resumeAll(): void {\n if (this.pauseDepth === 0 || --this.pauseDepth > 0) {\n return;\n }\n const now = Date.now();\n this.timers.forEach((timer, id) => {\n if (timer.handle === null && timer.remaining > 0) {\n timer.start = now;\n timer.handle = setTimeout(() => this.close(id), timer.remaining);\n }\n });\n }\n\n /**\n * Drive a toast through a promise's lifecycle: show `loading`, then swap to `success` or\n * `error` copy when it settles. Returns the original promise for chaining.\n */\n async promise<Value, Data = unknown>(\n promise: Promise<Value>,\n options: RdxToastPromiseOptions<Value, Data>\n ): Promise<Value> {\n const id = this.add<Data>({ ...resolveCopy(options.loading), timeout: 0, loading: true });\n\n try {\n const value = await promise;\n this.update<Data>(id, { ...resolveCopy(options.success, value), loading: false, timeout: DEFAULT_TIMEOUT });\n return value;\n } catch (error) {\n this.update<Data>(id, { ...resolveCopy(options.error, error), loading: false, timeout: DEFAULT_TIMEOUT });\n throw error;\n }\n }\n\n private scheduleTimeout(toast: RdxToastObject): void {\n this.clearTimer(toast.id);\n\n const timeout = toast.timeout ?? this.defaultTimeout;\n if (timeout <= 0 || toast.loading) {\n return;\n }\n\n const timer: TimerState = { handle: null, remaining: timeout, start: Date.now() };\n if (this.pauseDepth === 0) {\n timer.handle = setTimeout(() => this.close(toast.id), timeout);\n }\n this.timers.set(toast.id, timer);\n }\n\n private clearTimer(id: string): void {\n const timer = this.timers.get(id);\n if (timer?.handle != null) {\n clearTimeout(timer.handle);\n }\n this.timers.delete(id);\n }\n\n private clearHeight(id: string): void {\n this._heights.update((heights) => {\n if (!(id in heights)) {\n return heights;\n }\n const next = { ...heights };\n delete next[id];\n return next;\n });\n }\n}\n\n/** Normalize a string-or-options promise-copy entry (optionally derived from the settled value). */\nfunction resolveCopy<Value, Data>(\n entry: RdxToastAddOptions<Data> | string | ((value: Value) => RdxToastAddOptions<Data> | string),\n value?: Value\n): RdxToastAddOptions<Data> {\n const resolved = typeof entry === 'function' ? entry(value as Value) : entry;\n return typeof resolved === 'string' ? { title: resolved } : resolved;\n}\n\n/** Provide a {@link RdxToastManager} for an app (e.g. in `app.config.ts`). */\nexport function provideRdxToastManager(): Provider[] {\n return [RdxToastManager];\n}\n\n/**\n * Hosts a {@link RdxToastManager} for its subtree. Put it on a wrapping element (or the app root)\n * so descendant viewports and components share one queue. `limit` caps simultaneously visible toasts.\n */\n@Directive({\n selector: '[rdxToastProvider]',\n exportAs: 'rdxToastProvider',\n providers: [RdxToastManager]\n})\nexport class RdxToastProvider {\n private readonly manager = inject(RdxToastManager);\n\n /** Max number of toasts shown at once. */\n readonly limit = input<number>(DEFAULT_LIMIT);\n\n /** Default auto-dismiss delay (ms) for toasts that omit their own `timeout`. `0` disables it. */\n readonly timeout = input<number>(DEFAULT_TIMEOUT);\n\n constructor() {\n // `limit` / `defaultTimeout` are plain fields on the manager; keep them in sync with inputs.\n effect(() => {\n this.manager.limit = this.limit();\n this.manager.defaultTimeout = this.timeout();\n });\n }\n}\n","import { assertInInjectionContext, DestroyRef, inject } from '@angular/core';\nimport { usePointerDrag } from '@radix-ng/primitives/core';\n\n/** Direction a swipe travels to dismiss a toast. */\nexport type RdxToastSwipeDirection = 'up' | 'down' | 'left' | 'right';\n\n/** Unit vectors per dismiss direction (screen coordinates: +y is down). */\nconst UNIT: Record<RdxToastSwipeDirection, { x: number; y: number }> = {\n up: { x: 0, y: -1 },\n down: { x: 0, y: 1 },\n left: { x: -1, y: 0 },\n right: { x: 1, y: 0 }\n};\n\n/** Default travel (px) past which a release dismisses. */\nconst DEFAULT_THRESHOLD = 45;\n/** Signed velocity (px/ms) toward the dismiss direction that flicks a toast away. */\nconst FLICK_VELOCITY = 0.3;\n/** iOS-style resistance when dragging opposite the dismiss direction. */\nconst RUBBER_BAND = 0.5;\n\nexport interface RdxToastSwipeConfig {\n /** The toast element the gesture lives on (CSS variables + data attributes are written here). */\n element: () => HTMLElement;\n /** Allowed dismiss directions; the gesture follows whichever the user drags toward most. */\n directions: () => RdxToastSwipeDirection[];\n /** Whether the gesture is armed (false while the toast is leaving). */\n enabled: () => boolean;\n /** Travel (px) past which a release dismisses. Defaults to {@link DEFAULT_THRESHOLD}. */\n threshold?: number;\n /** Called once per release that commits to dismissal. */\n onDismiss: (event: PointerEvent) => void;\n /** Called when a swipe actually begins (e.g. to pause auto-dismiss timers). */\n onPress?: () => void;\n /** Called when a started swipe ends, dismissing or not (balances {@link RdxToastSwipeConfig.onPress}). */\n onRelease?: () => void;\n}\n\n/**\n * Headless swipe-to-dismiss for a toast, built on the shared {@link usePointerDrag} lifecycle (which\n * owns pointer capture, the start threshold, window listeners, and tap/cancel handling). This layer\n * adds the toast-specific direction projection, rubber-banding, flick detection, and the styling\n * contract — it applies no transform itself:\n *\n * - `--toast-swipe-movement-x` / `--toast-swipe-movement-y` — signed px offset along the active axis.\n * - `[data-swiping]` — present while a gesture is active (drive `transition: none` off this).\n * - `[data-swipe-direction]` — the active direction.\n * - `[data-swipe-dismiss]` — present briefly when a release commits to dismissal.\n *\n * Mark inner interactive regions with `[data-toast-swipe-ignore]` to opt them out of the gesture.\n * `RdxToastRoot` (the gesture host) sets `touch-action: none` so a touch-drag is not stolen by native\n * scrolling — without it the gesture only works with a mouse, not on touch devices.\n * Must be called from an injection context (a directive constructor).\n */\nexport function useToastSwipe(config: RdxToastSwipeConfig): void {\n assertInInjectionContext(useToastSwipe);\n\n const el = () => config.element();\n const axisSize = (direction: RdxToastSwipeDirection | null) =>\n direction === 'left' || direction === 'right' ? el().offsetWidth : el().offsetHeight;\n\n const rubber = (distance: number, direction: RdxToastSwipeDirection | null) => {\n const size = axisSize(direction) || 1;\n return (1 - 1 / ((Math.abs(distance) * RUBBER_BAND) / size + 1)) * size;\n };\n\n let active = false;\n let startX = 0;\n let startY = 0;\n let direction: RdxToastSwipeDirection | null = null;\n let pending = 0;\n let lastProjected = 0;\n let lastTime = 0;\n let velocity = 0;\n\n const write = (offset: number, dir: RdxToastSwipeDirection | null) => {\n const unit = dir ? UNIT[dir] : { x: 0, y: 0 };\n const node = el();\n node.style.setProperty('--toast-swipe-movement-x', `${unit.x * offset}px`);\n node.style.setProperty('--toast-swipe-movement-y', `${unit.y * offset}px`);\n };\n\n /** Pick the allowed direction the drag points toward most, with its signed projection (px). */\n const project = (dx: number, dy: number) => {\n let best: RdxToastSwipeDirection | null = null;\n let bestProjection = 0;\n for (const dir of config.directions()) {\n const unit = UNIT[dir];\n const projection = dx * unit.x + dy * unit.y;\n if (projection > bestProjection) {\n bestProjection = projection;\n best = dir;\n }\n }\n return { direction: best, projection: bestProjection };\n };\n\n usePointerDrag({\n canStart: (event) => {\n if (!config.enabled()) {\n return false;\n }\n return !(event.target as Element | null)?.closest('[data-toast-swipe-ignore]');\n },\n onStart: (event) => {\n active = true;\n startX = event.clientX;\n startY = event.clientY;\n direction = null;\n pending = 0;\n lastProjected = 0;\n lastTime = event.timeStamp;\n velocity = 0;\n\n el().setAttribute('data-swiping', '');\n el().removeAttribute('data-swipe-dismiss');\n config.onPress?.();\n },\n onMove: (event) => {\n // Abort if the toast began leaving mid-drag; the end handler settles back.\n if (!config.enabled()) {\n return false;\n }\n\n const dx = event.clientX - startX;\n const dy = event.clientY - startY;\n const { direction: dir, projection } = project(dx, dy);\n\n if (dir) {\n direction = dir;\n }\n el().setAttribute('data-swipe-direction', direction ?? '');\n\n // Move freely toward the dismiss direction; resist dragging the other way.\n pending = projection >= 0 ? projection : -rubber(projection, direction);\n\n const dt = event.timeStamp - lastTime;\n if (dt > 0) {\n velocity = (projection - lastProjected) / dt;\n lastProjected = projection;\n lastTime = event.timeStamp;\n }\n\n write(pending, direction);\n return true;\n },\n onEnd: (event, committed) => {\n active = false;\n el().removeAttribute('data-swiping');\n\n const threshold = config.threshold ?? DEFAULT_THRESHOLD;\n const dismiss = committed && config.enabled() && (pending >= threshold || velocity >= FLICK_VELOCITY);\n\n if (dismiss) {\n el().setAttribute('data-swipe-dismiss', '');\n config.onDismiss(event);\n } else {\n // Settle home; the consumer's `transition` animates the snap-back.\n write(0, direction);\n }\n\n config.onRelease?.();\n direction = null;\n }\n });\n\n // usePointerDrag does not call onEnd when the host is destroyed mid-gesture; balance the onPress\n // that paused the timers so the manager doesn't stay paused forever.\n inject(DestroyRef).onDestroy(() => {\n if (active) {\n active = false;\n config.onRelease?.();\n }\n });\n}\n","import { computed, DestroyRef, Directive, effect, ElementRef, inject, Injector, input, signal } from '@angular/core';\nimport { createContext, elementSize, injectId } from '@radix-ng/primitives/core';\nimport { RdxToastManager } from './toast-provider';\nimport { RdxToastSwipeDirection, useToastSwipe } from './toast-swipe';\nimport { RdxToastObject } from './toast.types';\n\nexport interface RdxToastRootContext {\n /** The toast model this part tree renders. */\n readonly toast: () => RdxToastObject;\n /** `id` of the title element, wired to `aria-labelledby` once a title registers. */\n readonly titleId: string;\n /** `id` of the description element, wired to `aria-describedby` once a description registers. */\n readonly descriptionId: string;\n /** Register/unregister the title part so the root only points `aria-labelledby` at a real element. */\n readonly setTitlePresent: (present: boolean) => void;\n /** Register/unregister the description part so `aria-describedby` only targets a real element. */\n readonly setDescriptionPresent: (present: boolean) => void;\n /** Begin dismissing this toast. */\n readonly close: () => void;\n}\n\nexport const [injectRdxToastRootContext, provideRdxToastRootContext] = createContext<RdxToastRootContext>(\n 'RdxToastRootContext',\n 'components/toast'\n);\n\nconst rootContext = (): RdxToastRootContext => {\n const instance = inject(RdxToastRoot);\n return {\n toast: () => instance.toast(),\n titleId: instance.titleId,\n descriptionId: instance.descriptionId,\n setTitlePresent: (present) => instance.titlePresent.set(present),\n setDescriptionPresent: (present) => instance.descriptionPresent.set(present),\n close: () => instance.close()\n };\n};\n\n/**\n * A single toast — the Angular counterpart of `<Toast.Root>`. Bind the toast model from the\n * viewport's `@for`; this directive owns the announcement `role`, the `data-state` enter/leave\n * contract, swipe-to-dismiss, and the stacking variables consumers style against.\n *\n * Stacking / styling contract written to the host (no transform is applied for you):\n * - `--toast-index` — position from the front (`0` = frontmost).\n * - `--toast-height` — this toast's measured height (px).\n * - `--toast-offset-y` — combined height (px) of the toasts stacked in front, for expanded layout.\n * - `--toast-swipe-movement-x` / `--toast-swipe-movement-y` — live swipe offset (px).\n * - `[data-front]` — present on the frontmost toast.\n * - `[data-expanded]` — present while the viewport is hovered/focused.\n * - `[data-state]` — `open` while visible, `closed` once dismissal begins.\n * - `[data-swiping]` / `[data-swipe-direction]` / `[data-swipe-dismiss]` — gesture state.\n *\n * When the leave animation (driven by `data-state=\"closed\"`) ends, the toast leaves the queue.\n */\n@Directive({\n selector: '[rdxToastRoot]',\n exportAs: 'rdxToastRoot',\n providers: [provideRdxToastRootContext(rootContext)],\n host: {\n // Own the swipe gesture's touch behavior on the element usePointerDrag binds to. Without\n // touch-action:none a touch-drag is claimed by native scrolling (pointercancel fires before\n // the gesture starts), so swipe-to-dismiss works with a mouse but not on touch devices. The\n // toast surface never scrolls, so disabling pan/zoom here is safe; user-select stops text\n // selection mid-swipe. Mirrors number-field's scrub area.\n '[style.touch-action]': '\"none\"',\n '[style.user-select]': '\"none\"',\n '[style.-webkit-user-select]': '\"none\"',\n '[attr.role]': 'role()',\n '[attr.aria-labelledby]': 'titlePresent() ? titleId : undefined',\n '[attr.aria-describedby]': 'descriptionPresent() ? descriptionId : undefined',\n '[attr.data-state]': 'dataState()',\n '[attr.data-type]': 'toast().type ?? undefined',\n '[attr.data-front]': 'index() === 0 ? \"\" : undefined',\n '[attr.data-expanded]': 'manager.expanded() ? \"\" : undefined',\n '[style.--toast-index]': 'index()',\n '[style.--toast-height]': 'height() + \"px\"',\n '[style.--toast-offset-y]': 'offsetY() + \"px\"',\n '(animationend)': 'onAnimationEnd()'\n }\n})\nexport class RdxToastRoot {\n protected readonly manager = inject(RdxToastManager);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly injector = inject(Injector);\n\n /** The toast model to render — pass the item from the viewport's `@for`. */\n readonly toast = input.required<RdxToastObject>();\n\n /** Allowed swipe-to-dismiss directions. Accepts a single direction or a list. */\n readonly swipeDirection = input<RdxToastSwipeDirection | RdxToastSwipeDirection[]>(['down', 'right']);\n\n readonly titleId = injectId('rdx-toast-title-');\n readonly descriptionId = injectId('rdx-toast-description-');\n\n /** Whether a title / description part has registered, gating the aria-* references. */\n readonly titlePresent = signal(false);\n readonly descriptionPresent = signal(false);\n\n private readonly size = elementSize({ elementRef: this.elementRef, injector: this.injector });\n /** This toast's measured height (px). */\n readonly height = computed(() => this.size().height);\n\n /** Position from the front of the stack — `0` is the newest/frontmost toast. */\n readonly index = computed(() => this.manager.layout()[this.toast().id]?.index ?? 0);\n\n /** Combined height (px) of the toasts stacked in front of this one (for expanded layout). */\n readonly offsetY = computed(() => this.manager.layout()[this.toast().id]?.offsetY ?? 0);\n\n /** `alert` (assertive) for high-priority toasts, otherwise `status`. */\n readonly role = computed(() => (this.toast().priority === 'high' ? 'alert' : 'status'));\n\n /** `open` while visible, `closed` once dismissal begins — drives enter/leave animations. */\n readonly dataState = computed(() => (this.toast().transitionStatus === 'ending' ? 'closed' : 'open'));\n\n private readonly directions = computed<RdxToastSwipeDirection[]>(() => {\n const value = this.swipeDirection();\n return Array.isArray(value) ? value : [value];\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n // Mirror the measured height into the manager for the expanded-stack offset math.\n effect(() => {\n this.manager.setHeight(this.toast().id, this.size().height);\n });\n\n useToastSwipe({\n element: () => this.elementRef.nativeElement,\n directions: () => this.directions(),\n enabled: () => this.toast().transitionStatus !== 'ending',\n onDismiss: () => this.close(),\n onPress: () => this.manager.pauseAll(),\n onRelease: () => this.manager.resumeAll()\n });\n\n // Replay the enter animation on an upsert that bumps `updateKey`. The toast keeps the same\n // DOM node (tracked by id), so restart the running animation by clearing and re-reading it.\n let firstKey = true;\n effect(() => {\n this.toast().updateKey;\n if (firstKey) {\n firstKey = false;\n return;\n }\n const node = this.elementRef.nativeElement;\n node.style.animation = 'none';\n void node.offsetWidth; // force reflow so the animation can restart\n node.style.animation = '';\n });\n\n destroyRef.onDestroy(() => this.manager.setHeight(this.toast().id, 0));\n }\n\n close(): void {\n this.manager.close(this.toast().id);\n }\n\n protected onAnimationEnd(): void {\n // Remove from the queue only after the leave (\"closed\") animation completes.\n if (this.toast().transitionStatus === 'ending') {\n this.manager.remove(this.toast().id);\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectRdxToastRootContext } from './toast-root';\n\n/**\n * An action button inside a toast (e.g. \"Undo\"). Unlike {@link RdxToastClose} it does not dismiss\n * on its own — wire your handler with `(click)` and call `close()` from the exposed context when\n * the action should also close the toast.\n */\n@Directive({\n selector: '[rdxToastAction]',\n exportAs: 'rdxToastAction',\n host: {\n type: 'button'\n }\n})\nexport class RdxToastAction {\n /** The toast root context, so handlers can read the toast or dismiss it after acting. */\n readonly rootContext = injectRdxToastRootContext();\n}\n","import { Directive } from '@angular/core';\nimport { injectRdxToastRootContext } from './toast-root';\n\n/** Button that dismisses its toast. Put it on a native `<button>` for built-in semantics. */\n@Directive({\n selector: '[rdxToastClose]',\n exportAs: 'rdxToastClose',\n host: {\n type: 'button',\n '(click)': 'rootContext.close()'\n }\n})\nexport class RdxToastClose {\n protected readonly rootContext = injectRdxToastRootContext();\n}\n","import { Directive } from '@angular/core';\nimport { injectRdxToastRootContext } from './toast-root';\n\n/**\n * Wraps a toast's inner parts (title, description, actions) — the Angular counterpart of\n * `<Toast.Content>`. Headless: it carries no styles; consumers apply `overflow: hidden` to clip\n * taller toasts during the stack/expand animation. It mirrors the root's `data-state` so content\n * can transition together with the root.\n */\n@Directive({\n selector: '[rdxToastContent]',\n exportAs: 'rdxToastContent',\n host: {\n '[attr.data-state]': 'rootContext.toast().transitionStatus === \"ending\" ? \"closed\" : \"open\"'\n }\n})\nexport class RdxToastContent {\n protected readonly rootContext = injectRdxToastRootContext();\n}\n","import { DestroyRef, Directive, inject } from '@angular/core';\nimport { injectRdxToastRootContext } from './toast-root';\n\n/** Supporting body text for a toast; registers so `aria-describedby` only targets a real node. */\n@Directive({\n selector: '[rdxToastDescription]',\n exportAs: 'rdxToastDescription',\n host: {\n '[id]': 'rootContext.descriptionId'\n }\n})\nexport class RdxToastDescription {\n protected readonly rootContext = injectRdxToastRootContext();\n\n constructor() {\n this.rootContext.setDescriptionPresent(true);\n inject(DestroyRef).onDestroy(() => this.rootContext.setDescriptionPresent(false));\n }\n}\n","import { Directive } from '@angular/core';\nimport { RdxPortal } from '@radix-ng/primitives/portal';\n\n/**\n * Moves the toast viewport to a different part of the DOM — the Angular counterpart of\n * `<Toast.Portal>`. Defaults to `document.body`; pass `container` to target another element.\n */\n@Directive({\n selector: '[rdxToastPortal]',\n exportAs: 'rdxToastPortal',\n hostDirectives: [\n {\n directive: RdxPortal,\n inputs: ['container']\n }\n ]\n})\nexport class RdxToastPortal {}\n","import { Directive, inject } from '@angular/core';\nimport { provideRdxPopperContentConfig, RdxPopper, RdxPopperContentWrapper } from '@radix-ng/primitives/popper';\n\n/**\n * Positions an anchored toast against an element — the Angular counterpart of `<Toast.Positioner>`.\n * Composes the popper machinery so a toast can point at a trigger instead of living in the stack.\n *\n * Bind `anchor` (and optionally `side`/`align`/offsets) — typically from a toast's `positionerProps`.\n * It hosts its own `RdxPopper` so it is self-contained (no surrounding `rdxPopperRoot` needed), and\n * mirrors the popper measurements as friendlier CSS variables plus `data-side` / `data-align`.\n */\n@Directive({\n selector: '[rdxToastPositioner]',\n exportAs: 'rdxToastPositioner',\n providers: [\n provideRdxPopperContentConfig({\n side: 'top',\n sideOffset: 8,\n align: 'center',\n arrowPadding: 6,\n collisionPadding: 8,\n updatePositionStrategy: 'always'\n })\n ],\n hostDirectives: [\n RdxPopper,\n {\n directive: RdxPopperContentWrapper,\n inputs: [\n 'anchor',\n 'side',\n 'sideOffset',\n 'align',\n 'alignOffset',\n 'arrowPadding',\n 'avoidCollisions',\n 'collisionBoundary',\n 'collisionPadding',\n 'sticky',\n 'hideWhenDetached',\n 'positionStrategy',\n 'updatePositionStrategy'\n ]\n }\n ],\n host: {\n '[attr.data-side]': 'wrapper.placedSide()',\n '[attr.data-align]': 'wrapper.placedAlign()',\n '[attr.data-anchor-hidden]': 'wrapper.anchorHidden() ? \"\" : undefined',\n '[style.--toast-anchor-width]': '\"var(--radix-popper-anchor-width)\"',\n '[style.--toast-transform-origin]': '\"var(--radix-popper-transform-origin)\"'\n }\n})\nexport class RdxToastPositioner {\n protected readonly wrapper = inject(RdxPopperContentWrapper);\n}\n","import { DestroyRef, Directive, inject } from '@angular/core';\nimport { injectRdxToastRootContext } from './toast-root';\n\n/** Accessible title for a toast; registers so the root only points `aria-labelledby` at a real node. */\n@Directive({\n selector: '[rdxToastTitle]',\n exportAs: 'rdxToastTitle',\n host: {\n '[id]': 'rootContext.titleId'\n }\n})\nexport class RdxToastTitle {\n protected readonly rootContext = injectRdxToastRootContext();\n\n constructor() {\n this.rootContext.setTitlePresent(true);\n inject(DestroyRef).onDestroy(() => this.rootContext.setTitlePresent(false));\n }\n}\n","import { DestroyRef, Directive, effect, inject, signal } from '@angular/core';\nimport { RdxToastManager } from './toast-provider';\n\n/**\n * The positioned region that holds the visible toasts — the Angular counterpart of\n * `<Toast.Viewport>`. Exposes the queue for templates to render, and while it is hovered or focused\n * it expands the stack (`data-expanded` on each root) and pauses every auto-dismiss timer, resuming\n * once neither hover nor focus remains — matching Base UI.\n *\n * Headless: it carries no positioning styles. Consumers position it (e.g. fixed bottom-right) and\n * iterate `viewport.toasts()` with `@for`.\n */\n@Directive({\n selector: '[rdxToastViewport]',\n exportAs: 'rdxToastViewport',\n host: {\n role: 'region',\n tabindex: '-1',\n '(mouseenter)': 'hovered.set(true)',\n '(mouseleave)': 'hovered.set(false)',\n '(focusin)': 'focused.set(true)',\n '(focusout)': 'onFocusOut($event)'\n }\n})\nexport class RdxToastViewport {\n protected readonly manager = inject(RdxToastManager);\n\n /** The live toast queue to render. */\n readonly toasts = this.manager.toasts;\n\n protected readonly hovered = signal(false);\n protected readonly focused = signal(false);\n\n /** Tracks the last expanded state so pause/resume stay balanced across transitions. */\n private wasExpanded = false;\n\n constructor() {\n effect(() => {\n const expanded = this.hovered() || this.focused();\n this.manager.setExpanded(expanded);\n\n if (expanded && !this.wasExpanded) {\n this.wasExpanded = true;\n this.manager.pauseAll();\n } else if (!expanded && this.wasExpanded) {\n this.wasExpanded = false;\n this.manager.resumeAll();\n }\n });\n\n // If the viewport is destroyed while still expanded, balance the outstanding pause so a\n // longer-lived manager doesn't stay paused forever.\n inject(DestroyRef).onDestroy(() => {\n if (this.wasExpanded) {\n this.wasExpanded = false;\n this.manager.setExpanded(false);\n this.manager.resumeAll();\n }\n });\n }\n\n protected onFocusOut(event: FocusEvent): void {\n // Only clear focus when it actually leaves the viewport subtree.\n const next = event.relatedTarget as Node | null;\n const host = event.currentTarget as HTMLElement | null;\n if (!host || !next || !host.contains(next)) {\n this.focused.set(false);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxToastAction } from './src/toast-action';\nimport { RdxToastClose } from './src/toast-close';\nimport { RdxToastContent } from './src/toast-content';\nimport { RdxToastDescription } from './src/toast-description';\nimport { RdxToastPortal } from './src/toast-portal';\nimport { RdxToastPositioner } from './src/toast-positioner';\nimport { RdxToastProvider } from './src/toast-provider';\nimport { RdxToastRoot } from './src/toast-root';\nimport { RdxToastTitle } from './src/toast-title';\nimport { RdxToastViewport } from './src/toast-viewport';\n\nexport * from './src/toast-action';\nexport * from './src/toast-close';\nexport * from './src/toast-content';\nexport * from './src/toast-description';\nexport * from './src/toast-portal';\nexport * from './src/toast-positioner';\nexport * from './src/toast-provider';\nexport * from './src/toast-root';\nexport * from './src/toast-swipe';\nexport * from './src/toast-title';\nexport * from './src/toast-viewport';\nexport * from './src/toast.types';\n\nexport const toastImports = [\n RdxToastProvider,\n RdxToastPortal,\n RdxToastViewport,\n RdxToastPositioner,\n RdxToastRoot,\n RdxToastContent,\n RdxToastTitle,\n RdxToastDescription,\n RdxToastClose,\n RdxToastAction\n];\n\n@NgModule({\n imports: [...toastImports],\n exports: [...toastImports]\n})\nexport class RdxToastModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -109,7 +109,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
109
109
|
}]
|
|
110
110
|
}], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], onValueChange: [{ type: i0.Output, args: ["onValueChange"] }] } });
|
|
111
111
|
|
|
112
|
-
const [injectToggleGroupContext, provideToggleGroupContext] = createContext('RdxToggleGroupContext');
|
|
112
|
+
const [injectToggleGroupContext, provideToggleGroupContext] = createContext('RdxToggleGroupContext', 'components/toggle-group');
|
|
113
113
|
|
|
114
114
|
/**
|
|
115
115
|
* A set of two-state buttons that can be toggled on or off. Owns roving keyboard focus over its
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radix-ng-primitives-toggle-group.mjs","sources":["../../../packages/primitives/toggle-group/src/toggle-group-base.ts","../../../packages/primitives/toggle-group/src/toggle-group-context.ts","../../../packages/primitives/toggle-group/src/toggle-group.ts","../../../packages/primitives/toggle-group/src/toggle-group-without-focus.ts","../../../packages/primitives/toggle-group/radix-ng-primitives-toggle-group.ts"],"sourcesContent":["import { booleanAttribute, computed, Directive, effect, input, model, output, signal, untracked } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { BooleanInput, DataOrientation } from '@radix-ng/primitives/core';\nimport { RdxToggleGroupContext } from './toggle-group-context';\n\n/** Builds the shared context a {@link RdxToggle} reads when it belongs to this group. */\nexport function toggleGroupContext(instance: RdxToggleGroupBase): RdxToggleGroupContext {\n return {\n value: instance.pressedValues,\n disabled: instance.isDisabled,\n multiple: instance.multiple,\n orientation: instance.orientation,\n toggle: (value) => instance.toggle(value)\n };\n}\n\n/**\n * Shared state and behavior for the toggle group. Concrete directives add the roving-focus group\n * ({@link RdxToggleGroup}) or omit it when an ancestor already owns focus, e.g. a toolbar\n * ({@link RdxToggleGroupWithoutFocus}).\n */\n@Directive({\n host: {\n role: 'group',\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-multiple]': 'multiple() ? \"\" : undefined',\n '(focusout)': 'onTouched?.()'\n }\n})\nexport abstract class RdxToggleGroupBase implements ControlValueAccessor {\n /**\n * The pressed values. Always an array — a single value is `[value]`. Use with `(onValueChange)`\n * for controlled state.\n */\n readonly value = model<string[]>();\n\n /** The values pressed when the group is initially rendered (uncontrolled). */\n readonly defaultValue = input<string[]>();\n\n /**\n * Whether multiple items can be pressed at the same time.\n *\n * @default false\n */\n readonly multiple = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the whole group is disabled.\n *\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * The orientation of the group, controlling arrow-key navigation.\n *\n * @default 'horizontal'\n */\n readonly orientation = input<DataOrientation>('horizontal');\n\n /** Event emitted when the pressed values change. */\n readonly onValueChange = output<string[]>();\n\n /** @ignore */\n readonly pressedValues = computed(() => this.value() ?? []);\n\n protected readonly accessorDisabled = signal(false);\n /** @ignore */\n readonly isDisabled = computed(() => this.disabled() || this.accessorDisabled());\n\n private onChange?: (value: string[]) => void;\n protected onTouched?: () => void;\n\n constructor() {\n effect(() => {\n const initial = this.defaultValue();\n if (initial !== undefined && untracked(this.value) === undefined) {\n this.value.set(initial);\n }\n });\n }\n\n /** @ignore */\n toggle(value: string): void {\n if (this.isDisabled()) {\n return;\n }\n\n const current = this.pressedValues();\n let next: string[];\n\n if (this.multiple()) {\n next = current.includes(value) ? current.filter((item) => item !== value) : [...current, value];\n } else {\n next = current.includes(value) ? [] : [value];\n }\n\n this.value.set(next);\n this.onValueChange.emit(next);\n this.onChange?.(next);\n }\n\n /** @ignore */\n writeValue(value: string[] | string | null): void {\n this.value.set(value == null ? [] : Array.isArray(value) ? value : [value]);\n }\n\n /** @ignore */\n registerOnChange(fn: (value: string[]) => void): void {\n this.onChange = fn;\n }\n\n /** @ignore */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /** @ignore */\n setDisabledState(isDisabled: boolean): void {\n this.accessorDisabled.set(isDisabled);\n }\n}\n","import { Signal } from '@angular/core';\nimport { createContext, DataOrientation } from '@radix-ng/primitives/core';\n\n/**\n * Shared state a {@link RdxToggle} reads when it participates in a toggle group.\n */\nexport interface RdxToggleGroupContext {\n /** The currently pressed values. */\n readonly value: Signal<string[]>;\n\n /** Whether the whole group is disabled. */\n readonly disabled: Signal<boolean>;\n\n /** Whether more than one item can be pressed at a time. */\n readonly multiple: Signal<boolean>;\n\n /** The orientation of the group. */\n readonly orientation: Signal<DataOrientation>;\n\n /** Toggle the pressed state of `value` within the group. */\n toggle(value: string): void;\n}\n\nexport const [injectToggleGroupContext, provideToggleGroupContext] =\n createContext<RdxToggleGroupContext>('RdxToggleGroupContext');\n","import { booleanAttribute, Directive, effect, inject, input } from '@angular/core';\nimport { BooleanInput, provideValueAccessor } from '@radix-ng/primitives/core';\nimport { Direction, RdxRovingFocusGroupDirective } from '@radix-ng/primitives/roving-focus';\nimport { RdxToggleGroupBase, toggleGroupContext } from './toggle-group-base';\nimport { provideToggleGroupContext } from './toggle-group-context';\n\n/**\n * A set of two-state buttons that can be toggled on or off. Owns roving keyboard focus over its\n * `[rdxToggle]` children.\n *\n * @see https://base-ui.com/react/components/toggle-group\n */\n@Directive({\n selector: '[rdxToggleGroup]',\n exportAs: 'rdxToggleGroup',\n hostDirectives: [RdxRovingFocusGroupDirective],\n providers: [\n provideToggleGroupContext(() => toggleGroupContext(inject(RdxToggleGroup))),\n provideValueAccessor(RdxToggleGroup)\n ]\n})\nexport class RdxToggleGroup extends RdxToggleGroupBase {\n /** Text direction for arrow-key navigation. */\n readonly dir = input<Direction>('ltr');\n\n /**\n * Whether keyboard navigation should loop from the last item back to the first.\n *\n * @default true\n */\n readonly loopFocus = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n private readonly rovingFocusGroup = inject(RdxRovingFocusGroupDirective, { self: true });\n\n constructor() {\n super();\n\n effect(() => {\n this.rovingFocusGroup.setOrientation(this.orientation());\n this.rovingFocusGroup.setDir(this.dir());\n this.rovingFocusGroup.setLoop(this.loopFocus());\n });\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { provideValueAccessor } from '@radix-ng/primitives/core';\nimport { RdxToggleGroupBase, toggleGroupContext } from './toggle-group-base';\nimport { provideToggleGroupContext } from './toggle-group-context';\n\n/**\n * A toggle group that does NOT create its own roving-focus group, for use inside a container that\n * already owns keyboard focus (e.g. a toolbar). The `[rdxToggle]` children register with the nearest\n * ancestor roving-focus group instead. Mirrors Base UI's behavior of skipping its composite root\n * when nested in a toolbar.\n */\n@Directive({\n selector: '[rdxToggleGroupWithoutFocus]',\n exportAs: 'rdxToggleGroupWithoutFocus',\n providers: [\n provideToggleGroupContext(() => toggleGroupContext(inject(RdxToggleGroupWithoutFocus))),\n provideValueAccessor(RdxToggleGroupWithoutFocus)\n ]\n})\nexport class RdxToggleGroupWithoutFocus extends RdxToggleGroupBase {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"radix-ng-primitives-toggle-group.mjs","sources":["../../../packages/primitives/toggle-group/src/toggle-group-base.ts","../../../packages/primitives/toggle-group/src/toggle-group-context.ts","../../../packages/primitives/toggle-group/src/toggle-group.ts","../../../packages/primitives/toggle-group/src/toggle-group-without-focus.ts","../../../packages/primitives/toggle-group/radix-ng-primitives-toggle-group.ts"],"sourcesContent":["import { booleanAttribute, computed, Directive, effect, input, model, output, signal, untracked } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { BooleanInput, DataOrientation } from '@radix-ng/primitives/core';\nimport { RdxToggleGroupContext } from './toggle-group-context';\n\n/** Builds the shared context a {@link RdxToggle} reads when it belongs to this group. */\nexport function toggleGroupContext(instance: RdxToggleGroupBase): RdxToggleGroupContext {\n return {\n value: instance.pressedValues,\n disabled: instance.isDisabled,\n multiple: instance.multiple,\n orientation: instance.orientation,\n toggle: (value) => instance.toggle(value)\n };\n}\n\n/**\n * Shared state and behavior for the toggle group. Concrete directives add the roving-focus group\n * ({@link RdxToggleGroup}) or omit it when an ancestor already owns focus, e.g. a toolbar\n * ({@link RdxToggleGroupWithoutFocus}).\n */\n@Directive({\n host: {\n role: 'group',\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-multiple]': 'multiple() ? \"\" : undefined',\n '(focusout)': 'onTouched?.()'\n }\n})\nexport abstract class RdxToggleGroupBase implements ControlValueAccessor {\n /**\n * The pressed values. Always an array — a single value is `[value]`. Use with `(onValueChange)`\n * for controlled state.\n */\n readonly value = model<string[]>();\n\n /** The values pressed when the group is initially rendered (uncontrolled). */\n readonly defaultValue = input<string[]>();\n\n /**\n * Whether multiple items can be pressed at the same time.\n *\n * @default false\n */\n readonly multiple = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the whole group is disabled.\n *\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * The orientation of the group, controlling arrow-key navigation.\n *\n * @default 'horizontal'\n */\n readonly orientation = input<DataOrientation>('horizontal');\n\n /** Event emitted when the pressed values change. */\n readonly onValueChange = output<string[]>();\n\n /** @ignore */\n readonly pressedValues = computed(() => this.value() ?? []);\n\n protected readonly accessorDisabled = signal(false);\n /** @ignore */\n readonly isDisabled = computed(() => this.disabled() || this.accessorDisabled());\n\n private onChange?: (value: string[]) => void;\n protected onTouched?: () => void;\n\n constructor() {\n effect(() => {\n const initial = this.defaultValue();\n if (initial !== undefined && untracked(this.value) === undefined) {\n this.value.set(initial);\n }\n });\n }\n\n /** @ignore */\n toggle(value: string): void {\n if (this.isDisabled()) {\n return;\n }\n\n const current = this.pressedValues();\n let next: string[];\n\n if (this.multiple()) {\n next = current.includes(value) ? current.filter((item) => item !== value) : [...current, value];\n } else {\n next = current.includes(value) ? [] : [value];\n }\n\n this.value.set(next);\n this.onValueChange.emit(next);\n this.onChange?.(next);\n }\n\n /** @ignore */\n writeValue(value: string[] | string | null): void {\n this.value.set(value == null ? [] : Array.isArray(value) ? value : [value]);\n }\n\n /** @ignore */\n registerOnChange(fn: (value: string[]) => void): void {\n this.onChange = fn;\n }\n\n /** @ignore */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /** @ignore */\n setDisabledState(isDisabled: boolean): void {\n this.accessorDisabled.set(isDisabled);\n }\n}\n","import { Signal } from '@angular/core';\nimport { createContext, DataOrientation } from '@radix-ng/primitives/core';\n\n/**\n * Shared state a {@link RdxToggle} reads when it participates in a toggle group.\n */\nexport interface RdxToggleGroupContext {\n /** The currently pressed values. */\n readonly value: Signal<string[]>;\n\n /** Whether the whole group is disabled. */\n readonly disabled: Signal<boolean>;\n\n /** Whether more than one item can be pressed at a time. */\n readonly multiple: Signal<boolean>;\n\n /** The orientation of the group. */\n readonly orientation: Signal<DataOrientation>;\n\n /** Toggle the pressed state of `value` within the group. */\n toggle(value: string): void;\n}\n\nexport const [injectToggleGroupContext, provideToggleGroupContext] = createContext<RdxToggleGroupContext>(\n 'RdxToggleGroupContext',\n 'components/toggle-group'\n);\n","import { booleanAttribute, Directive, effect, inject, input } from '@angular/core';\nimport { BooleanInput, provideValueAccessor } from '@radix-ng/primitives/core';\nimport { Direction, RdxRovingFocusGroupDirective } from '@radix-ng/primitives/roving-focus';\nimport { RdxToggleGroupBase, toggleGroupContext } from './toggle-group-base';\nimport { provideToggleGroupContext } from './toggle-group-context';\n\n/**\n * A set of two-state buttons that can be toggled on or off. Owns roving keyboard focus over its\n * `[rdxToggle]` children.\n *\n * @see https://base-ui.com/react/components/toggle-group\n */\n@Directive({\n selector: '[rdxToggleGroup]',\n exportAs: 'rdxToggleGroup',\n hostDirectives: [RdxRovingFocusGroupDirective],\n providers: [\n provideToggleGroupContext(() => toggleGroupContext(inject(RdxToggleGroup))),\n provideValueAccessor(RdxToggleGroup)\n ]\n})\nexport class RdxToggleGroup extends RdxToggleGroupBase {\n /** Text direction for arrow-key navigation. */\n readonly dir = input<Direction>('ltr');\n\n /**\n * Whether keyboard navigation should loop from the last item back to the first.\n *\n * @default true\n */\n readonly loopFocus = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n private readonly rovingFocusGroup = inject(RdxRovingFocusGroupDirective, { self: true });\n\n constructor() {\n super();\n\n effect(() => {\n this.rovingFocusGroup.setOrientation(this.orientation());\n this.rovingFocusGroup.setDir(this.dir());\n this.rovingFocusGroup.setLoop(this.loopFocus());\n });\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { provideValueAccessor } from '@radix-ng/primitives/core';\nimport { RdxToggleGroupBase, toggleGroupContext } from './toggle-group-base';\nimport { provideToggleGroupContext } from './toggle-group-context';\n\n/**\n * A toggle group that does NOT create its own roving-focus group, for use inside a container that\n * already owns keyboard focus (e.g. a toolbar). The `[rdxToggle]` children register with the nearest\n * ancestor roving-focus group instead. Mirrors Base UI's behavior of skipping its composite root\n * when nested in a toolbar.\n */\n@Directive({\n selector: '[rdxToggleGroupWithoutFocus]',\n exportAs: 'rdxToggleGroupWithoutFocus',\n providers: [\n provideToggleGroupContext(() => toggleGroupContext(inject(RdxToggleGroupWithoutFocus))),\n provideValueAccessor(RdxToggleGroupWithoutFocus)\n ]\n})\nexport class RdxToggleGroupWithoutFocus extends RdxToggleGroupBase {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,8 @@ import { isPlatformBrowser } from '@angular/common';
|
|
|
7
7
|
import * as i1$1 from '@radix-ng/primitives/separator';
|
|
8
8
|
import { RdxSeparatorRootDirective } from '@radix-ng/primitives/separator';
|
|
9
9
|
|
|
10
|
-
const [injectToolbarRootContext, provideToolbarRootContext] = createContext('RdxToolbarRootContext');
|
|
11
|
-
const [injectToolbarGroupContext, provideToolbarGroupContext] = createContext('RdxToolbarGroupContext');
|
|
10
|
+
const [injectToolbarRootContext, provideToolbarRootContext] = createContext('RdxToolbarRootContext', 'components/toolbar');
|
|
11
|
+
const [injectToolbarGroupContext, provideToolbarGroupContext] = createContext('RdxToolbarGroupContext', 'components/toolbar');
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* A button within a toolbar.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radix-ng-primitives-toolbar.mjs","sources":["../../../packages/primitives/toolbar/src/toolbar-context.ts","../../../packages/primitives/toolbar/src/toolbar-button.ts","../../../packages/primitives/toolbar/src/toolbar-group.ts","../../../packages/primitives/toolbar/src/toolbar-input.ts","../../../packages/primitives/toolbar/src/toolbar-link.ts","../../../packages/primitives/toolbar/src/toolbar-root.ts","../../../packages/primitives/toolbar/src/toolbar-separator.ts","../../../packages/primitives/toolbar/index.ts","../../../packages/primitives/toolbar/radix-ng-primitives-toolbar.ts"],"sourcesContent":["import { Signal } from '@angular/core';\nimport { createContext, DataOrientation } from '@radix-ng/primitives/core';\n\nexport interface RdxToolbarRootContext {\n /** The orientation of the toolbar. */\n readonly orientation: Signal<DataOrientation>;\n\n /** Whether the whole toolbar is disabled. */\n readonly disabled: Signal<boolean>;\n}\n\nexport const [injectToolbarRootContext, provideToolbarRootContext] =\n createContext<RdxToolbarRootContext>('RdxToolbarRootContext');\n\nexport interface RdxToolbarGroupContext {\n /** Whether the group (and therefore its items) is disabled. */\n readonly disabled: Signal<boolean>;\n}\n\nexport const [injectToolbarGroupContext, provideToolbarGroupContext] =\n createContext<RdxToolbarGroupContext>('RdxToolbarGroupContext');\n","import { booleanAttribute, computed, Directive, effect, inject, input } from '@angular/core';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { RdxRovingFocusItemDirective } from '@radix-ng/primitives/roving-focus';\nimport { injectToolbarGroupContext, injectToolbarRootContext } from './toolbar-context';\n\n/**\n * A button within a toolbar.\n *\n * @see https://base-ui.com/react/components/toolbar\n */\n@Directive({\n selector: '[rdxToolbarButton]',\n exportAs: 'rdxToolbarButton',\n hostDirectives: [RdxRovingFocusItemDirective],\n host: {\n '[attr.type]': 'nativeButton() ? \"button\" : undefined',\n '[attr.role]': 'nativeButton() ? undefined : \"button\"',\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-focusable]': 'focusableWhenDisabled() ? \"\" : undefined',\n '[attr.aria-disabled]': 'isDisabled() ? \"true\" : undefined',\n '[attr.disabled]': 'isDisabled() && !focusableWhenDisabled() ? \"\" : undefined',\n '(click)': 'onClick($event)'\n }\n})\nexport class RdxToolbarButton {\n protected readonly rootContext = injectToolbarRootContext();\n private readonly groupContext = injectToolbarGroupContext(true);\n private readonly rovingItem = inject(RdxRovingFocusItemDirective);\n\n /**\n * Whether the button is disabled.\n *\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the button stays focusable while disabled (so it remains discoverable for keyboard\n * and screen-reader users).\n *\n * @default true\n */\n readonly focusableWhenDisabled = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /**\n * Whether the host is a native `<button>`. When `false`, adds `role=\"button\"`.\n *\n * @default true\n */\n readonly nativeButton = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** @ignore Effective disabled state, combining the button, group and toolbar. */\n readonly isDisabled = computed(\n () => this.disabled() || (this.groupContext?.disabled() ?? false) || this.rootContext.disabled()\n );\n\n constructor() {\n // A disabled-but-focusable item stays in the roving sequence; otherwise it is removed.\n effect(() => this.rovingItem.setFocusable(!this.isDisabled() || this.focusableWhenDisabled()));\n }\n\n /** @ignore */\n protected onClick(event: Event): void {\n if (this.isDisabled()) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n}\n","import { booleanAttribute, computed, Directive, inject, input } from '@angular/core';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { injectToolbarRootContext, provideToolbarGroupContext, RdxToolbarGroupContext } from './toolbar-context';\n\nconst groupContext = (): RdxToolbarGroupContext => {\n const group = inject(RdxToolbarGroup);\n return { disabled: group.isDisabled };\n};\n\n/**\n * Groups several toolbar items together. Disabling the group disables all of its items.\n *\n * @see https://base-ui.com/react/components/toolbar\n */\n@Directive({\n selector: '[rdxToolbarGroup]',\n exportAs: 'rdxToolbarGroup',\n providers: [provideToolbarGroupContext(groupContext)],\n host: {\n role: 'group',\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined'\n }\n})\nexport class RdxToolbarGroup {\n protected readonly rootContext = injectToolbarRootContext();\n\n /**\n * Whether the group is disabled.\n *\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** @ignore Effective disabled state, combining the group and the toolbar. */\n readonly isDisabled = computed(() => this.disabled() || this.rootContext.disabled());\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n PLATFORM_ID\n} from '@angular/core';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { RdxRovingFocusItemDirective } from '@radix-ng/primitives/roving-focus';\nimport { injectToolbarGroupContext, injectToolbarRootContext } from './toolbar-context';\n\n/**\n * A native input within a toolbar. Participates in the toolbar's roving focus while keeping native\n * text-editing: the arrow keys move the caret within the text and only move focus to the\n * neighbouring toolbar item once the caret is at the corresponding edge (Base UI \"composite\" input).\n *\n * @see https://base-ui.com/react/components/toolbar\n */\n@Directive({\n selector: 'input[rdxToolbarInput]',\n exportAs: 'rdxToolbarInput',\n hostDirectives: [RdxRovingFocusItemDirective],\n host: {\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-focusable]': 'focusableWhenDisabled() ? \"\" : undefined',\n '[attr.aria-disabled]': 'isDisabled() ? \"true\" : undefined',\n '[disabled]': 'isDisabled() && !focusableWhenDisabled()'\n }\n})\nexport class RdxToolbarInput {\n protected readonly rootContext = injectToolbarRootContext();\n private readonly groupContext = injectToolbarGroupContext(true);\n private readonly rovingItem = inject(RdxRovingFocusItemDirective);\n private readonly elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n /** The initial value of the uncontrolled input. */\n readonly defaultValue = input<string>();\n\n /**\n * Whether the input is disabled.\n *\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the input stays focusable while disabled.\n *\n * @default true\n */\n readonly focusableWhenDisabled = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** @ignore */\n readonly isDisabled = computed(\n () => this.disabled() || (this.groupContext?.disabled() ?? false) || this.rootContext.disabled()\n );\n\n private appliedDefault = false;\n\n constructor() {\n effect(() => this.rovingItem.setFocusable(!this.isDisabled() || this.focusableWhenDisabled()));\n\n effect(() => {\n const value = this.defaultValue();\n if (!this.appliedDefault && value !== undefined) {\n this.appliedDefault = true;\n this.elementRef.nativeElement.value = value;\n }\n });\n\n if (this.isBrowser) {\n // Registered in the constructor — i.e. before the roving item's host `(keydown)` listener\n // — so it runs first and can keep arrow keys for caret movement (via\n // `stopImmediatePropagation`) unless the caret is at the edge, where the event is allowed\n // to reach the roving group and move focus.\n const element = this.elementRef.nativeElement;\n const handler = (event: KeyboardEvent) => this.handleCaretKeydown(event);\n element.addEventListener('keydown', handler, { capture: true });\n inject(DestroyRef).onDestroy(() => element.removeEventListener('keydown', handler, { capture: true }));\n }\n }\n\n private handleCaretKeydown(event: KeyboardEvent): void {\n if (event.defaultPrevented || event.metaKey || event.ctrlKey || event.altKey) {\n return;\n }\n\n const horizontal = this.rootContext.orientation() === 'horizontal';\n const previousKey = horizontal ? 'ArrowLeft' : 'ArrowUp';\n const nextKey = horizontal ? 'ArrowRight' : 'ArrowDown';\n const key = event.key;\n\n if (key !== previousKey && key !== nextKey && key !== 'Home' && key !== 'End') {\n return;\n }\n\n // Home/End always move the caret within the text.\n if (key === 'Home' || key === 'End') {\n event.stopImmediatePropagation();\n return;\n }\n\n const element = this.elementRef.nativeElement;\n let start: number | null;\n let end: number | null;\n try {\n start = element.selectionStart;\n end = element.selectionEnd;\n } catch {\n // Inputs such as `type=\"number\"` don't expose a selection — let the toolbar navigate.\n return;\n }\n\n if (start === null || end === null) {\n return;\n }\n\n const length = element.value.length;\n const atStart = start === 0 && end === 0;\n const atEnd = start === length && end === length;\n\n // Keep the key for caret movement unless the caret is already at the edge we're moving toward.\n if ((key === previousKey && !atStart) || (key === nextKey && !atEnd)) {\n event.stopImmediatePropagation();\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { RdxRovingFocusItemDirective } from '@radix-ng/primitives/roving-focus';\nimport { injectToolbarRootContext } from './toolbar-context';\n\n/**\n * A link within a toolbar.\n *\n * @see https://base-ui.com/react/components/toolbar\n */\n@Directive({\n selector: '[rdxToolbarLink]',\n exportAs: 'rdxToolbarLink',\n hostDirectives: [RdxRovingFocusItemDirective],\n host: {\n '[attr.data-orientation]': 'rootContext.orientation()',\n '(keydown)': 'onKeyDown($event)'\n }\n})\nexport class RdxToolbarLink {\n protected readonly rootContext = injectToolbarRootContext();\n\n /** @ignore Space activates a link, matching native button behavior in a toolbar. */\n protected onKeyDown(event: KeyboardEvent): void {\n if (event.key === ' ') {\n event.preventDefault();\n (event.currentTarget as HTMLElement)?.click();\n }\n }\n}\n","import { booleanAttribute, Directive, effect, inject, input } from '@angular/core';\nimport { BooleanInput, DataOrientation } from '@radix-ng/primitives/core';\nimport { Direction, RdxRovingFocusGroupDirective } from '@radix-ng/primitives/roving-focus';\nimport { provideToolbarRootContext, RdxToolbarRootContext } from './toolbar-context';\n\nconst rootContext = (): RdxToolbarRootContext => {\n const root = inject(RdxToolbarRoot);\n return {\n orientation: root.orientation,\n disabled: root.disabled\n };\n};\n\n/**\n * A container for grouping a set of controls, such as buttons, toggle groups or menus.\n * Owns roving keyboard focus over its items.\n *\n * @see https://base-ui.com/react/components/toolbar\n */\n@Directive({\n selector: '[rdxToolbarRoot]',\n exportAs: 'rdxToolbarRoot',\n hostDirectives: [RdxRovingFocusGroupDirective],\n providers: [provideToolbarRootContext(rootContext)],\n host: {\n role: 'toolbar',\n '[attr.aria-orientation]': 'orientation()',\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined'\n }\n})\nexport class RdxToolbarRoot {\n /**\n * The orientation of the toolbar.\n *\n * @default 'horizontal'\n */\n readonly orientation = input<DataOrientation>('horizontal');\n\n /** Text direction for arrow-key navigation. */\n readonly dir = input<Direction>('ltr');\n\n /**\n * Whether keyboard navigation should loop from the last item back to the first.\n *\n * @default true\n */\n readonly loopFocus = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /**\n * Whether the whole toolbar is disabled.\n *\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n private readonly rovingFocusGroup = inject(RdxRovingFocusGroupDirective, { self: true });\n\n constructor() {\n effect(() => {\n this.rovingFocusGroup.setOrientation(this.orientation());\n this.rovingFocusGroup.setDir(this.dir());\n this.rovingFocusGroup.setLoop(this.loopFocus());\n });\n }\n}\n","import { Directive } from '@angular/core';\nimport { RdxSeparatorRootDirective } from '@radix-ng/primitives/separator';\n\n/**\n * A separator between toolbar items or groups.\n *\n * @see https://base-ui.com/react/components/toolbar\n */\n@Directive({\n selector: '[rdxToolbarSeparator]',\n exportAs: 'rdxToolbarSeparator',\n hostDirectives: [{ directive: RdxSeparatorRootDirective, inputs: ['orientation'] }]\n})\nexport class RdxToolbarSeparator {}\n","import { NgModule } from '@angular/core';\nimport { RdxToolbarButton } from './src/toolbar-button';\nimport { RdxToolbarGroup } from './src/toolbar-group';\nimport { RdxToolbarInput } from './src/toolbar-input';\nimport { RdxToolbarLink } from './src/toolbar-link';\nimport { RdxToolbarRoot } from './src/toolbar-root';\nimport { RdxToolbarSeparator } from './src/toolbar-separator';\n\nexport * from './src/toolbar-button';\nexport * from './src/toolbar-context';\nexport * from './src/toolbar-group';\nexport * from './src/toolbar-input';\nexport * from './src/toolbar-link';\nexport * from './src/toolbar-root';\nexport * from './src/toolbar-separator';\n\nexport const toolbarImports = [\n RdxToolbarRoot,\n RdxToolbarButton,\n RdxToolbarLink,\n RdxToolbarInput,\n RdxToolbarGroup,\n RdxToolbarSeparator\n];\n\n@NgModule({\n imports: [...toolbarImports],\n exports: [...toolbarImports]\n})\nexport class RdxToolbarModule {}\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-toolbar.mjs","sources":["../../../packages/primitives/toolbar/src/toolbar-context.ts","../../../packages/primitives/toolbar/src/toolbar-button.ts","../../../packages/primitives/toolbar/src/toolbar-group.ts","../../../packages/primitives/toolbar/src/toolbar-input.ts","../../../packages/primitives/toolbar/src/toolbar-link.ts","../../../packages/primitives/toolbar/src/toolbar-root.ts","../../../packages/primitives/toolbar/src/toolbar-separator.ts","../../../packages/primitives/toolbar/index.ts","../../../packages/primitives/toolbar/radix-ng-primitives-toolbar.ts"],"sourcesContent":["import { Signal } from '@angular/core';\nimport { createContext, DataOrientation } from '@radix-ng/primitives/core';\n\nexport interface RdxToolbarRootContext {\n /** The orientation of the toolbar. */\n readonly orientation: Signal<DataOrientation>;\n\n /** Whether the whole toolbar is disabled. */\n readonly disabled: Signal<boolean>;\n}\n\nexport const [injectToolbarRootContext, provideToolbarRootContext] = createContext<RdxToolbarRootContext>(\n 'RdxToolbarRootContext',\n 'components/toolbar'\n);\n\nexport interface RdxToolbarGroupContext {\n /** Whether the group (and therefore its items) is disabled. */\n readonly disabled: Signal<boolean>;\n}\n\nexport const [injectToolbarGroupContext, provideToolbarGroupContext] = createContext<RdxToolbarGroupContext>(\n 'RdxToolbarGroupContext',\n 'components/toolbar'\n);\n","import { booleanAttribute, computed, Directive, effect, inject, input } from '@angular/core';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { RdxRovingFocusItemDirective } from '@radix-ng/primitives/roving-focus';\nimport { injectToolbarGroupContext, injectToolbarRootContext } from './toolbar-context';\n\n/**\n * A button within a toolbar.\n *\n * @see https://base-ui.com/react/components/toolbar\n */\n@Directive({\n selector: '[rdxToolbarButton]',\n exportAs: 'rdxToolbarButton',\n hostDirectives: [RdxRovingFocusItemDirective],\n host: {\n '[attr.type]': 'nativeButton() ? \"button\" : undefined',\n '[attr.role]': 'nativeButton() ? undefined : \"button\"',\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-focusable]': 'focusableWhenDisabled() ? \"\" : undefined',\n '[attr.aria-disabled]': 'isDisabled() ? \"true\" : undefined',\n '[attr.disabled]': 'isDisabled() && !focusableWhenDisabled() ? \"\" : undefined',\n '(click)': 'onClick($event)'\n }\n})\nexport class RdxToolbarButton {\n protected readonly rootContext = injectToolbarRootContext();\n private readonly groupContext = injectToolbarGroupContext(true);\n private readonly rovingItem = inject(RdxRovingFocusItemDirective);\n\n /**\n * Whether the button is disabled.\n *\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the button stays focusable while disabled (so it remains discoverable for keyboard\n * and screen-reader users).\n *\n * @default true\n */\n readonly focusableWhenDisabled = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /**\n * Whether the host is a native `<button>`. When `false`, adds `role=\"button\"`.\n *\n * @default true\n */\n readonly nativeButton = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** @ignore Effective disabled state, combining the button, group and toolbar. */\n readonly isDisabled = computed(\n () => this.disabled() || (this.groupContext?.disabled() ?? false) || this.rootContext.disabled()\n );\n\n constructor() {\n // A disabled-but-focusable item stays in the roving sequence; otherwise it is removed.\n effect(() => this.rovingItem.setFocusable(!this.isDisabled() || this.focusableWhenDisabled()));\n }\n\n /** @ignore */\n protected onClick(event: Event): void {\n if (this.isDisabled()) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n}\n","import { booleanAttribute, computed, Directive, inject, input } from '@angular/core';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { injectToolbarRootContext, provideToolbarGroupContext, RdxToolbarGroupContext } from './toolbar-context';\n\nconst groupContext = (): RdxToolbarGroupContext => {\n const group = inject(RdxToolbarGroup);\n return { disabled: group.isDisabled };\n};\n\n/**\n * Groups several toolbar items together. Disabling the group disables all of its items.\n *\n * @see https://base-ui.com/react/components/toolbar\n */\n@Directive({\n selector: '[rdxToolbarGroup]',\n exportAs: 'rdxToolbarGroup',\n providers: [provideToolbarGroupContext(groupContext)],\n host: {\n role: 'group',\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined'\n }\n})\nexport class RdxToolbarGroup {\n protected readonly rootContext = injectToolbarRootContext();\n\n /**\n * Whether the group is disabled.\n *\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** @ignore Effective disabled state, combining the group and the toolbar. */\n readonly isDisabled = computed(() => this.disabled() || this.rootContext.disabled());\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n PLATFORM_ID\n} from '@angular/core';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { RdxRovingFocusItemDirective } from '@radix-ng/primitives/roving-focus';\nimport { injectToolbarGroupContext, injectToolbarRootContext } from './toolbar-context';\n\n/**\n * A native input within a toolbar. Participates in the toolbar's roving focus while keeping native\n * text-editing: the arrow keys move the caret within the text and only move focus to the\n * neighbouring toolbar item once the caret is at the corresponding edge (Base UI \"composite\" input).\n *\n * @see https://base-ui.com/react/components/toolbar\n */\n@Directive({\n selector: 'input[rdxToolbarInput]',\n exportAs: 'rdxToolbarInput',\n hostDirectives: [RdxRovingFocusItemDirective],\n host: {\n '[attr.data-orientation]': 'rootContext.orientation()',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-focusable]': 'focusableWhenDisabled() ? \"\" : undefined',\n '[attr.aria-disabled]': 'isDisabled() ? \"true\" : undefined',\n '[disabled]': 'isDisabled() && !focusableWhenDisabled()'\n }\n})\nexport class RdxToolbarInput {\n protected readonly rootContext = injectToolbarRootContext();\n private readonly groupContext = injectToolbarGroupContext(true);\n private readonly rovingItem = inject(RdxRovingFocusItemDirective);\n private readonly elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n /** The initial value of the uncontrolled input. */\n readonly defaultValue = input<string>();\n\n /**\n * Whether the input is disabled.\n *\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the input stays focusable while disabled.\n *\n * @default true\n */\n readonly focusableWhenDisabled = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** @ignore */\n readonly isDisabled = computed(\n () => this.disabled() || (this.groupContext?.disabled() ?? false) || this.rootContext.disabled()\n );\n\n private appliedDefault = false;\n\n constructor() {\n effect(() => this.rovingItem.setFocusable(!this.isDisabled() || this.focusableWhenDisabled()));\n\n effect(() => {\n const value = this.defaultValue();\n if (!this.appliedDefault && value !== undefined) {\n this.appliedDefault = true;\n this.elementRef.nativeElement.value = value;\n }\n });\n\n if (this.isBrowser) {\n // Registered in the constructor — i.e. before the roving item's host `(keydown)` listener\n // — so it runs first and can keep arrow keys for caret movement (via\n // `stopImmediatePropagation`) unless the caret is at the edge, where the event is allowed\n // to reach the roving group and move focus.\n const element = this.elementRef.nativeElement;\n const handler = (event: KeyboardEvent) => this.handleCaretKeydown(event);\n element.addEventListener('keydown', handler, { capture: true });\n inject(DestroyRef).onDestroy(() => element.removeEventListener('keydown', handler, { capture: true }));\n }\n }\n\n private handleCaretKeydown(event: KeyboardEvent): void {\n if (event.defaultPrevented || event.metaKey || event.ctrlKey || event.altKey) {\n return;\n }\n\n const horizontal = this.rootContext.orientation() === 'horizontal';\n const previousKey = horizontal ? 'ArrowLeft' : 'ArrowUp';\n const nextKey = horizontal ? 'ArrowRight' : 'ArrowDown';\n const key = event.key;\n\n if (key !== previousKey && key !== nextKey && key !== 'Home' && key !== 'End') {\n return;\n }\n\n // Home/End always move the caret within the text.\n if (key === 'Home' || key === 'End') {\n event.stopImmediatePropagation();\n return;\n }\n\n const element = this.elementRef.nativeElement;\n let start: number | null;\n let end: number | null;\n try {\n start = element.selectionStart;\n end = element.selectionEnd;\n } catch {\n // Inputs such as `type=\"number\"` don't expose a selection — let the toolbar navigate.\n return;\n }\n\n if (start === null || end === null) {\n return;\n }\n\n const length = element.value.length;\n const atStart = start === 0 && end === 0;\n const atEnd = start === length && end === length;\n\n // Keep the key for caret movement unless the caret is already at the edge we're moving toward.\n if ((key === previousKey && !atStart) || (key === nextKey && !atEnd)) {\n event.stopImmediatePropagation();\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { RdxRovingFocusItemDirective } from '@radix-ng/primitives/roving-focus';\nimport { injectToolbarRootContext } from './toolbar-context';\n\n/**\n * A link within a toolbar.\n *\n * @see https://base-ui.com/react/components/toolbar\n */\n@Directive({\n selector: '[rdxToolbarLink]',\n exportAs: 'rdxToolbarLink',\n hostDirectives: [RdxRovingFocusItemDirective],\n host: {\n '[attr.data-orientation]': 'rootContext.orientation()',\n '(keydown)': 'onKeyDown($event)'\n }\n})\nexport class RdxToolbarLink {\n protected readonly rootContext = injectToolbarRootContext();\n\n /** @ignore Space activates a link, matching native button behavior in a toolbar. */\n protected onKeyDown(event: KeyboardEvent): void {\n if (event.key === ' ') {\n event.preventDefault();\n (event.currentTarget as HTMLElement)?.click();\n }\n }\n}\n","import { booleanAttribute, Directive, effect, inject, input } from '@angular/core';\nimport { BooleanInput, DataOrientation } from '@radix-ng/primitives/core';\nimport { Direction, RdxRovingFocusGroupDirective } from '@radix-ng/primitives/roving-focus';\nimport { provideToolbarRootContext, RdxToolbarRootContext } from './toolbar-context';\n\nconst rootContext = (): RdxToolbarRootContext => {\n const root = inject(RdxToolbarRoot);\n return {\n orientation: root.orientation,\n disabled: root.disabled\n };\n};\n\n/**\n * A container for grouping a set of controls, such as buttons, toggle groups or menus.\n * Owns roving keyboard focus over its items.\n *\n * @see https://base-ui.com/react/components/toolbar\n */\n@Directive({\n selector: '[rdxToolbarRoot]',\n exportAs: 'rdxToolbarRoot',\n hostDirectives: [RdxRovingFocusGroupDirective],\n providers: [provideToolbarRootContext(rootContext)],\n host: {\n role: 'toolbar',\n '[attr.aria-orientation]': 'orientation()',\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined'\n }\n})\nexport class RdxToolbarRoot {\n /**\n * The orientation of the toolbar.\n *\n * @default 'horizontal'\n */\n readonly orientation = input<DataOrientation>('horizontal');\n\n /** Text direction for arrow-key navigation. */\n readonly dir = input<Direction>('ltr');\n\n /**\n * Whether keyboard navigation should loop from the last item back to the first.\n *\n * @default true\n */\n readonly loopFocus = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /**\n * Whether the whole toolbar is disabled.\n *\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n private readonly rovingFocusGroup = inject(RdxRovingFocusGroupDirective, { self: true });\n\n constructor() {\n effect(() => {\n this.rovingFocusGroup.setOrientation(this.orientation());\n this.rovingFocusGroup.setDir(this.dir());\n this.rovingFocusGroup.setLoop(this.loopFocus());\n });\n }\n}\n","import { Directive } from '@angular/core';\nimport { RdxSeparatorRootDirective } from '@radix-ng/primitives/separator';\n\n/**\n * A separator between toolbar items or groups.\n *\n * @see https://base-ui.com/react/components/toolbar\n */\n@Directive({\n selector: '[rdxToolbarSeparator]',\n exportAs: 'rdxToolbarSeparator',\n hostDirectives: [{ directive: RdxSeparatorRootDirective, inputs: ['orientation'] }]\n})\nexport class RdxToolbarSeparator {}\n","import { NgModule } from '@angular/core';\nimport { RdxToolbarButton } from './src/toolbar-button';\nimport { RdxToolbarGroup } from './src/toolbar-group';\nimport { RdxToolbarInput } from './src/toolbar-input';\nimport { RdxToolbarLink } from './src/toolbar-link';\nimport { RdxToolbarRoot } from './src/toolbar-root';\nimport { RdxToolbarSeparator } from './src/toolbar-separator';\n\nexport * from './src/toolbar-button';\nexport * from './src/toolbar-context';\nexport * from './src/toolbar-group';\nexport * from './src/toolbar-input';\nexport * from './src/toolbar-link';\nexport * from './src/toolbar-root';\nexport * from './src/toolbar-separator';\n\nexport const toolbarImports = [\n RdxToolbarRoot,\n RdxToolbarButton,\n RdxToolbarLink,\n RdxToolbarInput,\n RdxToolbarGroup,\n RdxToolbarSeparator\n];\n\n@NgModule({\n imports: [...toolbarImports],\n exports: [...toolbarImports]\n})\nexport class RdxToolbarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -79,7 +79,7 @@ function useTimeoutFn(cb, delay, options = {}, destroyRef) {
|
|
|
79
79
|
return { start, stop, isPending: () => id != null };
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
const [injectRdxTooltipProviderContext, provideRdxTooltipProviderContext] = createContext('RdxTooltipProviderContext');
|
|
82
|
+
const [injectRdxTooltipProviderContext, provideRdxTooltipProviderContext] = createContext('RdxTooltipProviderContext', 'components/tooltip');
|
|
83
83
|
const numberOrUndefined = (value) => (value == null ? undefined : numberAttribute(value));
|
|
84
84
|
const providerContext = () => {
|
|
85
85
|
const provider = inject(RdxTooltipProvider);
|
|
@@ -125,7 +125,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
125
125
|
}]
|
|
126
126
|
}], propDecorators: { delay: [{ type: i0.Input, args: [{ isSignal: true, alias: "delay", required: false }] }], closeDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeDelay", required: false }] }], timeout: [{ type: i0.Input, args: [{ isSignal: true, alias: "timeout", required: false }] }] } });
|
|
127
127
|
|
|
128
|
-
const [injectRdxTooltipContext, provideRdxTooltipContext] = createContext('RdxTooltipContext');
|
|
128
|
+
const [injectRdxTooltipContext, provideRdxTooltipContext] = createContext('RdxTooltipContext', 'components/tooltip');
|
|
129
129
|
const context = () => contextFor(inject(RdxTooltip));
|
|
130
130
|
class RdxTooltip {
|
|
131
131
|
constructor() {
|