@radix-ng/primitives 1.0.0-beta.0 → 1.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-calendar.mjs +95 -83
- package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-core.mjs +114 -4
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-cropper.mjs +287 -308
- package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-date-field.mjs +55 -15
- package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-drawer.mjs +6 -105
- package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-editable.mjs +304 -23
- package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-fieldset.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menu.mjs +409 -1
- package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-meter.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popper.mjs +21 -4
- package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-scroll-area.mjs +923 -0
- package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tabs.mjs +11 -2
- package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toast.mjs +839 -0
- package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tooltip.mjs +9 -1
- package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
- package/package.json +10 -2
- package/types/radix-ng-primitives-accordion.d.ts +3 -2
- package/types/radix-ng-primitives-calendar.d.ts +38 -18
- package/types/radix-ng-primitives-checkbox.d.ts +5 -5
- package/types/radix-ng-primitives-collapsible.d.ts +2 -1
- package/types/radix-ng-primitives-context-menu.d.ts +3 -2
- package/types/radix-ng-primitives-core.d.ts +42 -3
- package/types/radix-ng-primitives-cropper.d.ts +89 -56
- package/types/radix-ng-primitives-date-field.d.ts +11 -5
- package/types/radix-ng-primitives-dialog.d.ts +2 -1
- package/types/radix-ng-primitives-drawer.d.ts +5 -27
- package/types/radix-ng-primitives-editable.d.ts +90 -13
- package/types/radix-ng-primitives-field.d.ts +3 -2
- package/types/radix-ng-primitives-fieldset.d.ts +3 -2
- package/types/radix-ng-primitives-focus-scope.d.ts +2 -1
- package/types/radix-ng-primitives-menu.d.ts +16 -4
- package/types/radix-ng-primitives-menubar.d.ts +2 -1
- package/types/radix-ng-primitives-meter.d.ts +3 -2
- package/types/radix-ng-primitives-navigation-menu.d.ts +1 -1
- package/types/radix-ng-primitives-number-field.d.ts +6 -6
- package/types/radix-ng-primitives-popover.d.ts +2 -1
- package/types/radix-ng-primitives-popper.d.ts +19 -2
- package/types/radix-ng-primitives-preview-card.d.ts +1 -1
- package/types/radix-ng-primitives-progress.d.ts +3 -2
- package/types/radix-ng-primitives-roving-focus.d.ts +4 -3
- package/types/radix-ng-primitives-scroll-area.d.ts +253 -0
- package/types/radix-ng-primitives-select.d.ts +6 -6
- package/types/radix-ng-primitives-slider.d.ts +1 -1
- package/types/radix-ng-primitives-switch.d.ts +1 -1
- package/types/radix-ng-primitives-tabs.d.ts +1 -1
- package/types/radix-ng-primitives-toast.d.ts +378 -0
- package/types/radix-ng-primitives-toggle-group.d.ts +2 -1
- package/types/radix-ng-primitives-toolbar.d.ts +3 -2
- package/types/radix-ng-primitives-tooltip.d.ts +3 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radix-ng-primitives-scroll-area.mjs","sources":["../../../packages/primitives/scroll-area/src/constants.ts","../../../packages/primitives/scroll-area/src/utils.ts","../../../packages/primitives/scroll-area/src/scroll-area-root.ts","../../../packages/primitives/scroll-area/src/scroll-area-viewport.ts","../../../packages/primitives/scroll-area/src/scroll-area-content.ts","../../../packages/primitives/scroll-area/src/scroll-area-corner.ts","../../../packages/primitives/scroll-area/src/scroll-area-scrollbar.ts","../../../packages/primitives/scroll-area/src/scroll-area-thumb.ts","../../../packages/primitives/scroll-area/index.ts","../../../packages/primitives/scroll-area/radix-ng-primitives-scroll-area.ts"],"sourcesContent":["/** How long (ms) the `data-scrolling` attribute stays applied after the last scroll movement. */\nexport const SCROLL_TIMEOUT = 500;\n\n/** Minimum size (px) of the thumb so it stays grabbable on very large content. */\nexport const MIN_THUMB_SIZE = 16;\n\n/** 100 ms without scroll events ≈ scroll end (mirrors the native `scrollend` heuristic). */\nexport const SCROLL_END_TIMEOUT = 100;\n\n/** Distance (px) within which a scroll offset is snapped to an edge. */\nexport const SCROLL_EDGE_TOLERANCE_PX = 1;\n","import { clamp } from '@radix-ng/primitives/core';\nimport { SCROLL_EDGE_TOLERANCE_PX } from './constants';\n\n/**\n * Returns the combined start/end `margin` or `padding` of an element along an axis,\n * resolving logical (inline/block) properties so RTL layouts compute correctly.\n */\nexport function getOffset(element: Element | null, prop: 'margin' | 'padding', axis: 'x' | 'y'): number {\n if (!element) {\n return 0;\n }\n\n const styles = getComputedStyle(element);\n const propAxis = axis === 'x' ? 'Inline' : 'Block';\n\n // Safari misreports `marginInlineEnd` in RTL. We have to assume the start/end\n // values are symmetrical, which is likely.\n if (axis === 'x' && prop === 'margin') {\n return parseFloat(styles[`${prop}InlineStart` as keyof CSSStyleDeclaration] as string) * 2;\n }\n\n return (\n parseFloat(styles[`${prop}${propAxis}Start` as keyof CSSStyleDeclaration] as string) +\n parseFloat(styles[`${prop}${propAxis}End` as keyof CSSStyleDeclaration] as string)\n );\n}\n\n/**\n * Snaps a scroll offset that is within {@link SCROLL_EDGE_TOLERANCE_PX} of either end\n * to that boundary, giving the overflow edge attributes a \"sticky\" feel at scroll limits.\n */\nexport function normalizeScrollOffset(value: number, max: number): number {\n if (max <= 0) {\n return 0;\n }\n\n const clamped = clamp(value, 0, max);\n const startDistance = clamped;\n const endDistance = max - clamped;\n const withinStartTolerance = startDistance <= SCROLL_EDGE_TOLERANCE_PX;\n const withinEndTolerance = endDistance <= SCROLL_EDGE_TOLERANCE_PX;\n\n if (withinStartTolerance && withinEndTolerance) {\n return startDistance <= endDistance ? 0 : max;\n }\n if (withinStartTolerance) {\n return 0;\n }\n if (withinEndTolerance) {\n return max;\n }\n\n return clamped;\n}\n\nlet scrollbarHideStylesInjected = false;\n\n/**\n * Injects (once per document) the CSS that hides the native scrollbars of the viewport.\n * Headless directives can't hide WebKit scrollbars via inline styles, so a small\n * stylesheet keyed by the `[rdxScrollAreaViewport]` selector is appended to `<head>`.\n */\nexport function injectScrollbarHideStyles(document: Document): void {\n if (scrollbarHideStylesInjected || typeof document === 'undefined') {\n return;\n }\n scrollbarHideStylesInjected = true;\n\n const style = document.createElement('style');\n style.setAttribute('data-rdx-scroll-area', '');\n style.textContent = `[rdxScrollAreaViewport]{scrollbar-width:none;-ms-overflow-style:none}[rdxScrollAreaViewport]::-webkit-scrollbar{display:none}`;\n document.head.appendChild(style);\n}\n","import { computed, DestroyRef, Directive, ElementRef, inject, input, signal, Signal } from '@angular/core';\nimport { createContext, Direction } from '@radix-ng/primitives/core';\nimport { SCROLL_TIMEOUT } from './constants';\nimport { getOffset } from './utils';\n\nexport type Size = { width: number; height: number };\nexport type Coords = { x: number; y: number };\nexport type OverflowEdges = { xStart: boolean; xEnd: boolean; yStart: boolean; yEnd: boolean };\nexport type HiddenState = { x: boolean; y: boolean; corner: boolean };\n\n/** A minimal, React-`ref`-like mutable holder shared through context. */\nexport type MutableRef<T> = { current: T | null };\n\nexport type OverflowEdgeThreshold = number | Partial<{ xStart: number; xEnd: number; yStart: number; yEnd: number }>;\n\nconst DEFAULT_SIZE: Size = { width: 0, height: 0 };\nconst DEFAULT_OVERFLOW_EDGES: OverflowEdges = { xStart: false, xEnd: false, yStart: false, yEnd: false };\nconst DEFAULT_HIDDEN_STATE: HiddenState = { x: true, y: true, corner: true };\n\nexport interface ScrollAreaRootContext {\n readonly rootId: string;\n readonly direction: Signal<Direction>;\n readonly overflowEdgeThreshold: Signal<{ xStart: number; xEnd: number; yStart: number; yEnd: number }>;\n\n // Reactive state\n readonly hovering: Signal<boolean>;\n readonly scrollingX: Signal<boolean>;\n readonly scrollingY: Signal<boolean>;\n readonly touchModality: Signal<boolean>;\n readonly hasMeasuredScrollbar: Signal<boolean>;\n readonly cornerSize: Signal<Size>;\n readonly thumbSize: Signal<Size>;\n readonly hiddenState: Signal<HiddenState>;\n readonly overflowEdges: Signal<OverflowEdges>;\n\n // Element references (filled in by the child parts as they mount)\n readonly rootRef: MutableRef<HTMLElement>;\n readonly viewportRef: MutableRef<HTMLElement>;\n readonly scrollbarYRef: MutableRef<HTMLElement>;\n readonly scrollbarXRef: MutableRef<HTMLElement>;\n readonly thumbYRef: MutableRef<HTMLElement>;\n readonly thumbXRef: MutableRef<HTMLElement>;\n readonly cornerRef: MutableRef<HTMLElement>;\n\n // State setters used by the viewport's measurement pass\n setHovering(value: boolean): void;\n setHasMeasuredScrollbar(value: boolean): void;\n setScrollingX(value: boolean): void;\n setScrollingY(value: boolean): void;\n setThumbSize(value: Size): void;\n setCornerSize(value: Size): void;\n setHiddenState(value: HiddenState): void;\n setOverflowEdges(value: OverflowEdges): void;\n\n // Pointer/scroll handlers shared with the scrollbar and thumb\n handleScroll(position: Coords): void;\n handlePointerDown(event: PointerEvent): void;\n handlePointerMove(event: PointerEvent): void;\n handlePointerUp(event: PointerEvent): void;\n}\n\nexport const [injectScrollAreaRootContext, provideScrollAreaRootContext] =\n createContext<ScrollAreaRootContext>('ScrollAreaRootContext');\n\nconst rootContext = (): ScrollAreaRootContext => {\n const root = inject(RdxScrollAreaRoot);\n return {\n rootId: root.rootId,\n direction: root.direction,\n overflowEdgeThreshold: root.normalizedThreshold,\n hovering: root.hovering,\n scrollingX: root.scrollingX,\n scrollingY: root.scrollingY,\n touchModality: root.touchModality,\n hasMeasuredScrollbar: root.hasMeasuredScrollbar,\n cornerSize: root.cornerSize,\n thumbSize: root.thumbSize,\n hiddenState: root.hiddenState,\n overflowEdges: root.overflowEdges,\n rootRef: root.rootRef,\n viewportRef: root.viewportRef,\n scrollbarYRef: root.scrollbarYRef,\n scrollbarXRef: root.scrollbarXRef,\n thumbYRef: root.thumbYRef,\n thumbXRef: root.thumbXRef,\n cornerRef: root.cornerRef,\n setHovering: (v) => root.hovering.set(v),\n setHasMeasuredScrollbar: (v) => root.hasMeasuredScrollbar.set(v),\n setScrollingX: (v) => root.setScrollingX(v),\n setScrollingY: (v) => root.setScrollingY(v),\n setThumbSize: (v) => root.setThumbSize(v),\n setCornerSize: (v) => root.setCornerSize(v),\n setHiddenState: (v) => root.setHiddenState(v),\n setOverflowEdges: (v) => root.setOverflowEdges(v),\n handleScroll: (p) => root.handleScroll(p),\n handlePointerDown: (e) => root.handlePointerDown(e),\n handlePointerMove: (e) => root.handlePointerMove(e),\n handlePointerUp: (e) => root.handlePointerUp(e)\n };\n};\n\nlet idCounter = 0;\n\n/**\n * Groups all parts of the scroll area.\n * Renders a `<div>` element.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxScrollAreaRoot]',\n exportAs: 'rdxScrollAreaRoot',\n providers: [provideScrollAreaRootContext(rootContext)],\n host: {\n role: 'presentation',\n '[style.position]': '\"relative\"',\n '[style.--scroll-area-corner-height]': 'cornerSize().height + \"px\"',\n '[style.--scroll-area-corner-width]': 'cornerSize().width + \"px\"',\n '[attr.data-scrolling]': '(scrollingX() || scrollingY()) ? \"\" : undefined',\n '[attr.data-has-overflow-x]': '!hiddenState().x ? \"\" : undefined',\n '[attr.data-has-overflow-y]': '!hiddenState().y ? \"\" : undefined',\n '[attr.data-overflow-x-start]': 'overflowEdges().xStart ? \"\" : undefined',\n '[attr.data-overflow-x-end]': 'overflowEdges().xEnd ? \"\" : undefined',\n '[attr.data-overflow-y-start]': 'overflowEdges().yStart ? \"\" : undefined',\n '[attr.data-overflow-y-end]': 'overflowEdges().yEnd ? \"\" : undefined',\n '(pointerenter)': 'onPointerEnterOrMove($event)',\n '(pointermove)': 'onPointerEnterOrMove($event)',\n '(pointerdown)': 'onTouchModalityChange($event)',\n '(pointerleave)': 'hovering.set(false)'\n }\n})\nexport class RdxScrollAreaRoot {\n private readonly destroyRef = inject(DestroyRef);\n\n readonly rootId = `rdx-scroll-area-${idCounter++}`;\n\n /** Text direction of the scroll area. Affects horizontal (RTL) scroll math. */\n readonly dir = input<Direction>('ltr');\n readonly direction: Signal<Direction> = this.dir;\n\n /**\n * The threshold in pixels that must be passed before the overflow edge attributes are applied.\n * Accepts a single number for all edges or an object to configure them individually.\n */\n readonly overflowEdgeThreshold = input<OverflowEdgeThreshold>(0);\n\n readonly normalizedThreshold = computed(() => normalizeOverflowEdgeThreshold(this.overflowEdgeThreshold()));\n\n readonly hovering = signal(false);\n readonly scrollingX = signal(false);\n readonly scrollingY = signal(false);\n readonly touchModality = signal(false);\n readonly hasMeasuredScrollbar = signal(false);\n readonly cornerSize = signal<Size>(DEFAULT_SIZE);\n readonly thumbSize = signal<Size>(DEFAULT_SIZE);\n readonly hiddenState = signal<HiddenState>(DEFAULT_HIDDEN_STATE);\n readonly overflowEdges = signal<OverflowEdges>(DEFAULT_OVERFLOW_EDGES);\n\n readonly rootRef: MutableRef<HTMLElement> = { current: inject(ElementRef).nativeElement };\n readonly viewportRef: MutableRef<HTMLElement> = { current: null };\n readonly scrollbarYRef: MutableRef<HTMLElement> = { current: null };\n readonly scrollbarXRef: MutableRef<HTMLElement> = { current: null };\n readonly thumbYRef: MutableRef<HTMLElement> = { current: null };\n readonly thumbXRef: MutableRef<HTMLElement> = { current: null };\n readonly cornerRef: MutableRef<HTMLElement> = { current: null };\n\n // Imperative drag state (deliberately non-reactive).\n private thumbDragging = false;\n private startY = 0;\n private startX = 0;\n private startScrollTop = 0;\n private startScrollLeft = 0;\n private currentOrientation: 'vertical' | 'horizontal' = 'vertical';\n private scrollPosition: Coords = { x: 0, y: 0 };\n\n private scrollYTimer: ReturnType<typeof setTimeout> | undefined;\n private scrollXTimer: ReturnType<typeof setTimeout> | undefined;\n\n constructor() {\n this.destroyRef.onDestroy(() => {\n clearTimeout(this.scrollYTimer);\n clearTimeout(this.scrollXTimer);\n });\n }\n\n setScrollingX(value: boolean): void {\n this.scrollingX.set(value);\n }\n\n setScrollingY(value: boolean): void {\n this.scrollingY.set(value);\n }\n\n setThumbSize(value: Size): void {\n const prev = this.thumbSize();\n if (prev.width !== value.width || prev.height !== value.height) {\n this.thumbSize.set(value);\n }\n }\n\n setCornerSize(value: Size): void {\n const prev = this.cornerSize();\n if (prev.width !== value.width || prev.height !== value.height) {\n this.cornerSize.set(value);\n }\n }\n\n setHiddenState(value: HiddenState): void {\n const prev = this.hiddenState();\n if (prev.x !== value.x || prev.y !== value.y || prev.corner !== value.corner) {\n this.hiddenState.set(value);\n }\n }\n\n setOverflowEdges(value: OverflowEdges): void {\n const prev = this.overflowEdges();\n if (\n prev.xStart !== value.xStart ||\n prev.xEnd !== value.xEnd ||\n prev.yStart !== value.yStart ||\n prev.yEnd !== value.yEnd\n ) {\n this.overflowEdges.set(value);\n }\n }\n\n handleScroll(scrollPosition: Coords): void {\n const offsetX = scrollPosition.x - this.scrollPosition.x;\n const offsetY = scrollPosition.y - this.scrollPosition.y;\n this.scrollPosition = scrollPosition;\n\n if (offsetY !== 0) {\n this.scrollingY.set(true);\n clearTimeout(this.scrollYTimer);\n this.scrollYTimer = setTimeout(() => this.scrollingY.set(false), SCROLL_TIMEOUT);\n }\n\n if (offsetX !== 0) {\n this.scrollingX.set(true);\n clearTimeout(this.scrollXTimer);\n this.scrollXTimer = setTimeout(() => this.scrollingX.set(false), SCROLL_TIMEOUT);\n }\n }\n\n handlePointerDown(event: PointerEvent): void {\n if (event.button !== 0) {\n return;\n }\n\n this.thumbDragging = true;\n this.startY = event.clientY;\n this.startX = event.clientX;\n this.currentOrientation =\n ((event.currentTarget as Element | null)?.getAttribute('data-orientation') as 'vertical' | 'horizontal') ??\n 'vertical';\n\n const viewport = this.viewportRef.current;\n if (viewport) {\n this.startScrollTop = viewport.scrollTop;\n this.startScrollLeft = viewport.scrollLeft;\n }\n if (this.thumbYRef.current && this.currentOrientation === 'vertical') {\n this.thumbYRef.current.setPointerCapture(event.pointerId);\n }\n if (this.thumbXRef.current && this.currentOrientation === 'horizontal') {\n this.thumbXRef.current.setPointerCapture(event.pointerId);\n }\n }\n\n handlePointerMove(event: PointerEvent): void {\n if (!this.thumbDragging) {\n return;\n }\n\n const deltaY = event.clientY - this.startY;\n const deltaX = event.clientX - this.startX;\n\n const viewport = this.viewportRef.current;\n if (!viewport) {\n return;\n }\n\n const scrollableContentHeight = viewport.scrollHeight;\n const viewportHeight = viewport.clientHeight;\n const scrollableContentWidth = viewport.scrollWidth;\n const viewportWidth = viewport.clientWidth;\n\n if (this.thumbYRef.current && this.scrollbarYRef.current && this.currentOrientation === 'vertical') {\n const scrollbarYOffset = getOffset(this.scrollbarYRef.current, 'padding', 'y');\n const thumbYOffset = getOffset(this.thumbYRef.current, 'margin', 'y');\n const thumbHeight = this.thumbYRef.current.offsetHeight;\n const maxThumbOffsetY =\n this.scrollbarYRef.current.offsetHeight - thumbHeight - scrollbarYOffset - thumbYOffset;\n const scrollRatioY = deltaY / maxThumbOffsetY;\n\n viewport.scrollTop = this.startScrollTop + scrollRatioY * (scrollableContentHeight - viewportHeight);\n event.preventDefault();\n\n this.scrollingY.set(true);\n clearTimeout(this.scrollYTimer);\n this.scrollYTimer = setTimeout(() => this.scrollingY.set(false), SCROLL_TIMEOUT);\n }\n\n if (this.thumbXRef.current && this.scrollbarXRef.current && this.currentOrientation === 'horizontal') {\n const scrollbarXOffset = getOffset(this.scrollbarXRef.current, 'padding', 'x');\n const thumbXOffset = getOffset(this.thumbXRef.current, 'margin', 'x');\n const thumbWidth = this.thumbXRef.current.offsetWidth;\n const maxThumbOffsetX =\n this.scrollbarXRef.current.offsetWidth - thumbWidth - scrollbarXOffset - thumbXOffset;\n const scrollRatioX = deltaX / maxThumbOffsetX;\n\n viewport.scrollLeft = this.startScrollLeft + scrollRatioX * (scrollableContentWidth - viewportWidth);\n event.preventDefault();\n\n this.scrollingX.set(true);\n clearTimeout(this.scrollXTimer);\n this.scrollXTimer = setTimeout(() => this.scrollingX.set(false), SCROLL_TIMEOUT);\n }\n }\n\n handlePointerUp(event: PointerEvent): void {\n this.thumbDragging = false;\n\n // `pointercancel` releases capture implicitly, so guard against releasing a\n // capture we no longer hold (which would throw).\n if (\n this.thumbYRef.current &&\n this.currentOrientation === 'vertical' &&\n this.thumbYRef.current.hasPointerCapture(event.pointerId)\n ) {\n this.thumbYRef.current.releasePointerCapture(event.pointerId);\n }\n if (\n this.thumbXRef.current &&\n this.currentOrientation === 'horizontal' &&\n this.thumbXRef.current.hasPointerCapture(event.pointerId)\n ) {\n this.thumbXRef.current.releasePointerCapture(event.pointerId);\n }\n }\n\n onTouchModalityChange(event: PointerEvent): void {\n this.touchModality.set(event.pointerType === 'touch');\n }\n\n onPointerEnterOrMove(event: PointerEvent): void {\n this.onTouchModalityChange(event);\n\n if (event.pointerType !== 'touch') {\n const root = this.rootRef.current;\n const target = event.target as Node | null;\n this.hovering.set(!!root && !!target && root.contains(target));\n }\n }\n}\n\nfunction normalizeOverflowEdgeThreshold(threshold: OverflowEdgeThreshold | undefined): {\n xStart: number;\n xEnd: number;\n yStart: number;\n yEnd: number;\n} {\n if (typeof threshold === 'number') {\n const value = Math.max(0, threshold);\n return { xStart: value, xEnd: value, yStart: value, yEnd: value };\n }\n\n return {\n xStart: Math.max(0, threshold?.xStart || 0),\n xEnd: Math.max(0, threshold?.xEnd || 0),\n yStart: Math.max(0, threshold?.yStart || 0),\n yEnd: Math.max(0, threshold?.yEnd || 0)\n };\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { afterNextRender, DestroyRef, Directive, effect, ElementRef, inject, PLATFORM_ID } from '@angular/core';\nimport { clamp, createContext } from '@radix-ng/primitives/core';\nimport { MIN_THUMB_SIZE, SCROLL_END_TIMEOUT } from './constants';\nimport { HiddenState, injectScrollAreaRootContext } from './scroll-area-root';\nimport { getOffset, injectScrollbarHideStyles, normalizeScrollOffset } from './utils';\n\nexport interface ScrollAreaViewportContext {\n /** Re-measures the viewport and repositions the thumbs. Called by the content's ResizeObserver. */\n computeThumbPosition(): void;\n}\n\nexport const [injectScrollAreaViewportContext, provideScrollAreaViewportContext] =\n createContext<ScrollAreaViewportContext>('ScrollAreaViewportContext');\n\nconst viewportContext = (): ScrollAreaViewportContext => {\n const viewport = inject(RdxScrollAreaViewport);\n return {\n computeThumbPosition: () => viewport.computeThumbPosition()\n };\n};\n\n/**\n * The actual scrollable container of the scroll area.\n * Renders a `<div>` element.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxScrollAreaViewport]',\n exportAs: 'rdxScrollAreaViewport',\n providers: [provideScrollAreaViewportContext(viewportContext)],\n host: {\n role: 'presentation',\n '[style.overflow]': '\"scroll\"',\n '[attr.tabindex]': '(rootContext.hiddenState().x && rootContext.hiddenState().y) ? -1 : 0',\n '[attr.data-id]': 'rootContext.rootId + \"-viewport\"',\n '[attr.data-scrolling]': '(rootContext.scrollingX() || rootContext.scrollingY()) ? \"\" : undefined',\n '[attr.data-has-overflow-x]': '!rootContext.hiddenState().x ? \"\" : undefined',\n '[attr.data-has-overflow-y]': '!rootContext.hiddenState().y ? \"\" : undefined',\n '[attr.data-overflow-x-start]': 'rootContext.overflowEdges().xStart ? \"\" : undefined',\n '[attr.data-overflow-x-end]': 'rootContext.overflowEdges().xEnd ? \"\" : undefined',\n '[attr.data-overflow-y-start]': 'rootContext.overflowEdges().yStart ? \"\" : undefined',\n '[attr.data-overflow-y-end]': 'rootContext.overflowEdges().yEnd ? \"\" : undefined',\n '(scroll)': 'onScroll()',\n '(wheel)': 'onUserInteraction()',\n '(touchmove)': 'onUserInteraction()',\n '(pointermove)': 'onUserInteraction()',\n '(pointerenter)': 'onUserInteraction()',\n '(keydown)': 'onUserInteraction()'\n }\n})\nexport class RdxScrollAreaViewport {\n protected readonly rootContext = injectScrollAreaRootContext();\n\n private readonly element: HTMLElement = inject(ElementRef).nativeElement;\n private readonly destroyRef = inject(DestroyRef);\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n private programmaticScroll = true;\n private lastMeasuredMetrics: [number, number, number, number] = [NaN, NaN, NaN, NaN];\n private scrollEndTimer: ReturnType<typeof setTimeout> | undefined;\n private animationsTimer: ReturnType<typeof setTimeout> | undefined;\n\n constructor() {\n this.rootContext.viewportRef.current = this.element;\n\n if (this.isBrowser) {\n injectScrollbarHideStyles(document);\n }\n\n // Recompute after hidden-state toggles (so newly shown scrollbars get measured),\n // on direction flips, and when the overflow-edge threshold changes.\n const hiddenState = this.rootContext.hiddenState;\n const direction = this.rootContext.direction;\n const threshold = this.rootContext.overflowEdgeThreshold;\n effect(() => {\n hiddenState();\n direction();\n threshold();\n queueMicrotask(() => this.computeThumbPosition());\n });\n\n afterNextRender(() => {\n this.computeThumbPosition();\n this.observeViewport();\n\n if (this.element.matches(':hover')) {\n this.rootContext.setHovering(true);\n }\n });\n\n this.destroyRef.onDestroy(() => {\n clearTimeout(this.scrollEndTimer);\n clearTimeout(this.animationsTimer);\n });\n }\n\n computeThumbPosition(): void {\n const viewportEl = this.rootContext.viewportRef.current;\n const scrollbarYEl = this.rootContext.scrollbarYRef.current;\n const scrollbarXEl = this.rootContext.scrollbarXRef.current;\n const thumbYEl = this.rootContext.thumbYRef.current;\n const thumbXEl = this.rootContext.thumbXRef.current;\n const cornerEl = this.rootContext.cornerRef.current;\n\n if (!viewportEl) {\n return;\n }\n\n const direction = this.rootContext.direction();\n const threshold = this.rootContext.overflowEdgeThreshold();\n const cornerSize = this.rootContext.cornerSize();\n\n const scrollableContentHeight = viewportEl.scrollHeight;\n const scrollableContentWidth = viewportEl.scrollWidth;\n const viewportHeight = viewportEl.clientHeight;\n const viewportWidth = viewportEl.clientWidth;\n const scrollTop = viewportEl.scrollTop;\n const scrollLeft = viewportEl.scrollLeft;\n\n const isFirstMeasurement = Number.isNaN(this.lastMeasuredMetrics[0]);\n this.lastMeasuredMetrics = [viewportHeight, scrollableContentHeight, viewportWidth, scrollableContentWidth];\n\n if (isFirstMeasurement) {\n this.rootContext.setHasMeasuredScrollbar(true);\n }\n\n if (scrollableContentHeight === 0 || scrollableContentWidth === 0) {\n return;\n }\n\n const nextHiddenState = getHiddenState(viewportEl);\n const scrollbarYHidden = nextHiddenState.y;\n const scrollbarXHidden = nextHiddenState.x;\n const ratioX = viewportWidth / scrollableContentWidth;\n const ratioY = viewportHeight / scrollableContentHeight;\n const maxScrollLeft = Math.max(0, scrollableContentWidth - viewportWidth);\n const maxScrollTop = Math.max(0, scrollableContentHeight - viewportHeight);\n\n let scrollLeftFromStart = 0;\n let scrollLeftFromEnd = 0;\n if (!scrollbarXHidden) {\n const rawScrollLeftFromStart =\n direction === 'rtl' ? clamp(-scrollLeft, 0, maxScrollLeft) : clamp(scrollLeft, 0, maxScrollLeft);\n scrollLeftFromStart = normalizeScrollOffset(rawScrollLeftFromStart, maxScrollLeft);\n scrollLeftFromEnd = maxScrollLeft - scrollLeftFromStart;\n }\n\n const rawScrollTopFromStart = !scrollbarYHidden ? clamp(scrollTop, 0, maxScrollTop) : 0;\n const scrollTopFromStart = !scrollbarYHidden ? normalizeScrollOffset(rawScrollTopFromStart, maxScrollTop) : 0;\n const scrollTopFromEnd = !scrollbarYHidden ? maxScrollTop - scrollTopFromStart : 0;\n const nextWidth = scrollbarXHidden ? 0 : viewportWidth;\n const nextHeight = scrollbarYHidden ? 0 : viewportHeight;\n\n let nextCornerWidth = 0;\n let nextCornerHeight = 0;\n if (!scrollbarXHidden && !scrollbarYHidden) {\n nextCornerWidth = scrollbarYEl?.offsetWidth || 0;\n nextCornerHeight = scrollbarXEl?.offsetHeight || 0;\n }\n\n // Only subtract corner size from scrollbar dimensions if the corner hasn't been sized yet.\n const cornerNotYetSized = cornerSize.width === 0 && cornerSize.height === 0;\n const cornerWidthOffset = cornerNotYetSized ? nextCornerWidth : 0;\n const cornerHeightOffset = cornerNotYetSized ? nextCornerHeight : 0;\n\n const scrollbarXOffset = getOffset(scrollbarXEl, 'padding', 'x');\n const scrollbarYOffset = getOffset(scrollbarYEl, 'padding', 'y');\n const thumbXOffset = getOffset(thumbXEl, 'margin', 'x');\n const thumbYOffset = getOffset(thumbYEl, 'margin', 'y');\n\n const idealNextWidth = nextWidth - scrollbarXOffset - thumbXOffset;\n const idealNextHeight = nextHeight - scrollbarYOffset - thumbYOffset;\n\n const maxNextWidth = scrollbarXEl\n ? Math.min(scrollbarXEl.offsetWidth - cornerWidthOffset, idealNextWidth)\n : idealNextWidth;\n const maxNextHeight = scrollbarYEl\n ? Math.min(scrollbarYEl.offsetHeight - cornerHeightOffset, idealNextHeight)\n : idealNextHeight;\n\n const clampedNextWidth = Math.max(MIN_THUMB_SIZE, maxNextWidth * ratioX);\n const clampedNextHeight = Math.max(MIN_THUMB_SIZE, maxNextHeight * ratioY);\n\n this.rootContext.setThumbSize({ width: clampedNextWidth, height: clampedNextHeight });\n\n // Handle Y (vertical) scroll\n if (scrollbarYEl && thumbYEl) {\n const maxThumbOffsetY = scrollbarYEl.offsetHeight - clampedNextHeight - scrollbarYOffset - thumbYOffset;\n const scrollRangeY = scrollableContentHeight - viewportHeight;\n const scrollRatioY = scrollRangeY === 0 ? 0 : scrollTop / scrollRangeY;\n // In Safari, don't allow it to go negative or too far as `scrollTop` considers the rubber band effect.\n const thumbOffsetY = Math.min(maxThumbOffsetY, Math.max(0, scrollRatioY * maxThumbOffsetY));\n thumbYEl.style.transform = `translate3d(0,${thumbOffsetY}px,0)`;\n }\n\n // Handle X (horizontal) scroll\n if (scrollbarXEl && thumbXEl) {\n const maxThumbOffsetX = scrollbarXEl.offsetWidth - clampedNextWidth - scrollbarXOffset - thumbXOffset;\n const scrollRangeX = scrollableContentWidth - viewportWidth;\n const scrollRatioX = scrollRangeX === 0 ? 0 : scrollLeft / scrollRangeX;\n const thumbOffsetX =\n direction === 'rtl'\n ? clamp(scrollRatioX * maxThumbOffsetX, -maxThumbOffsetX, 0)\n : clamp(scrollRatioX * maxThumbOffsetX, 0, maxThumbOffsetX);\n thumbXEl.style.transform = `translate3d(${thumbOffsetX}px,0,0)`;\n }\n\n viewportEl.style.setProperty('--scroll-area-overflow-x-start', `${scrollLeftFromStart}px`);\n viewportEl.style.setProperty('--scroll-area-overflow-x-end', `${scrollLeftFromEnd}px`);\n viewportEl.style.setProperty('--scroll-area-overflow-y-start', `${scrollTopFromStart}px`);\n viewportEl.style.setProperty('--scroll-area-overflow-y-end', `${scrollTopFromEnd}px`);\n\n if (cornerEl) {\n if (scrollbarXHidden || scrollbarYHidden) {\n this.rootContext.setCornerSize({ width: 0, height: 0 });\n } else {\n this.rootContext.setCornerSize({ width: nextCornerWidth, height: nextCornerHeight });\n }\n }\n\n this.rootContext.setHiddenState(nextHiddenState);\n\n this.rootContext.setOverflowEdges({\n xStart: !scrollbarXHidden && scrollLeftFromStart > threshold.xStart,\n xEnd: !scrollbarXHidden && scrollLeftFromEnd > threshold.xEnd,\n yStart: !scrollbarYHidden && scrollTopFromStart > threshold.yStart,\n yEnd: !scrollbarYHidden && scrollTopFromEnd > threshold.yEnd\n });\n }\n\n onScroll(): void {\n const viewportEl = this.rootContext.viewportRef.current;\n if (!viewportEl) {\n return;\n }\n\n this.computeThumbPosition();\n\n if (!this.programmaticScroll) {\n this.rootContext.handleScroll({ x: viewportEl.scrollLeft, y: viewportEl.scrollTop });\n }\n\n // Debounce restoring the programmatic flag so momentum scrolling (no further\n // user-interaction events) is still treated as user-driven.\n clearTimeout(this.scrollEndTimer);\n this.scrollEndTimer = setTimeout(() => {\n this.programmaticScroll = true;\n }, SCROLL_END_TIMEOUT);\n }\n\n onUserInteraction(): void {\n this.programmaticScroll = false;\n }\n\n private observeViewport(): void {\n const viewport = this.element;\n if (typeof ResizeObserver === 'undefined') {\n return;\n }\n\n let hasInitialized = false;\n const resizeObserver = new ResizeObserver(() => {\n if (!hasInitialized) {\n hasInitialized = true;\n const m = this.lastMeasuredMetrics;\n if (\n m[0] === viewport.clientHeight &&\n m[1] === viewport.scrollHeight &&\n m[2] === viewport.clientWidth &&\n m[3] === viewport.scrollWidth\n ) {\n return;\n }\n }\n this.computeThumbPosition();\n });\n resizeObserver.observe(viewport);\n\n // Wait for subtree animations to finish, then recompute geometry that may have\n // been affected by transform-based animations.\n this.animationsTimer = setTimeout(() => {\n const animations = viewport.getAnimations({ subtree: true });\n if (animations.length === 0) {\n return;\n }\n Promise.allSettled(animations.map((animation) => animation.finished))\n .then(() => this.computeThumbPosition())\n .catch(() => {});\n }, 0);\n\n this.destroyRef.onDestroy(() => resizeObserver.disconnect());\n }\n}\n\nfunction getHiddenState(viewport: HTMLElement): HiddenState {\n const y = viewport.clientHeight >= viewport.scrollHeight;\n const x = viewport.clientWidth >= viewport.scrollWidth;\n return { y, x, corner: y || x };\n}\n","import { afterNextRender, DestroyRef, Directive, ElementRef, inject } from '@angular/core';\nimport { injectScrollAreaRootContext } from './scroll-area-root';\nimport { injectScrollAreaViewportContext } from './scroll-area-viewport';\n\n/**\n * A container for the content of the scroll area.\n * Renders a `<div>` element.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxScrollAreaContent]',\n exportAs: 'rdxScrollAreaContent',\n host: {\n role: 'presentation',\n '[style.min-width]': '\"fit-content\"',\n '[attr.data-scrolling]': '(rootContext.scrollingX() || rootContext.scrollingY()) ? \"\" : undefined',\n '[attr.data-has-overflow-x]': '!rootContext.hiddenState().x ? \"\" : undefined',\n '[attr.data-has-overflow-y]': '!rootContext.hiddenState().y ? \"\" : undefined',\n '[attr.data-overflow-x-start]': 'rootContext.overflowEdges().xStart ? \"\" : undefined',\n '[attr.data-overflow-x-end]': 'rootContext.overflowEdges().xEnd ? \"\" : undefined',\n '[attr.data-overflow-y-start]': 'rootContext.overflowEdges().yStart ? \"\" : undefined',\n '[attr.data-overflow-y-end]': 'rootContext.overflowEdges().yEnd ? \"\" : undefined'\n }\n})\nexport class RdxScrollAreaContent {\n protected readonly rootContext = injectScrollAreaRootContext();\n private readonly viewportContext = injectScrollAreaViewportContext();\n private readonly element: HTMLElement = inject(ElementRef).nativeElement;\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n // Whether the content mounted after the viewport's first measurement; if so the\n // initial ResizeObserver fire is what brings the overflow state in sync.\n const computeOnInitialResize = this.rootContext.hasMeasuredScrollbar();\n\n afterNextRender(() => {\n if (typeof ResizeObserver === 'undefined') {\n return;\n }\n\n let hasInitialized = false;\n const resizeObserver = new ResizeObserver(() => {\n if (!hasInitialized) {\n hasInitialized = true;\n // ResizeObserver fires once upon observing. Skip that initial call to avoid\n // double-calculating the thumb position on mount, unless the content mounted\n // after the viewport's initial measurement.\n if (!computeOnInitialResize) {\n return;\n }\n }\n this.viewportContext.computeThumbPosition();\n });\n resizeObserver.observe(this.element);\n this.destroyRef.onDestroy(() => resizeObserver.disconnect());\n });\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\nimport { injectScrollAreaRootContext } from './scroll-area-root';\n\n/**\n * A small rectangular area that appears at the intersection of horizontal and vertical scrollbars.\n * Renders a `<div>` element.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxScrollAreaCorner]',\n exportAs: 'rdxScrollAreaCorner',\n host: {\n '[style.position]': '\"absolute\"',\n '[style.bottom]': '\"0\"',\n '[style.inset-inline-end]': '\"0\"',\n '[style.width]': 'rootContext.cornerSize().width + \"px\"',\n '[style.height]': 'rootContext.cornerSize().height + \"px\"',\n '[style.display]': 'rootContext.hiddenState().corner ? \"none\" : null'\n }\n})\nexport class RdxScrollAreaCorner {\n protected readonly rootContext = injectScrollAreaRootContext();\n\n constructor() {\n this.rootContext.cornerRef.current = inject(ElementRef).nativeElement;\n }\n}\n","import { booleanAttribute, computed, Directive, effect, ElementRef, inject, input } from '@angular/core';\nimport { BooleanInput, createContext } from '@radix-ng/primitives/core';\nimport { injectScrollAreaRootContext } from './scroll-area-root';\nimport { getOffset } from './utils';\n\nexport type ScrollbarOrientation = 'vertical' | 'horizontal';\n\nexport interface ScrollAreaScrollbarContext {\n orientation: () => ScrollbarOrientation;\n}\n\nexport const [injectScrollAreaScrollbarContext, provideScrollAreaScrollbarContext] =\n createContext<ScrollAreaScrollbarContext>('ScrollAreaScrollbarContext');\n\nconst scrollbarContext = (): ScrollAreaScrollbarContext => {\n const scrollbar = inject(RdxScrollAreaScrollbar);\n return { orientation: () => scrollbar.orientation() };\n};\n\n/**\n * A vertical or horizontal scrollbar for the scroll area.\n * Renders a `<div>` element.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxScrollAreaScrollbar]',\n exportAs: 'rdxScrollAreaScrollbar',\n providers: [provideScrollAreaScrollbarContext(scrollbarContext)],\n host: {\n '[attr.data-id]': 'rootContext.rootId + \"-scrollbar\"',\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-hovering]': 'rootContext.hovering() ? \"\" : undefined',\n '[attr.data-scrolling]': 'scrolling() ? \"\" : undefined',\n '[attr.data-has-overflow-x]': '!rootContext.hiddenState().x ? \"\" : undefined',\n '[attr.data-has-overflow-y]': '!rootContext.hiddenState().y ? \"\" : undefined',\n '[attr.data-overflow-x-start]': 'rootContext.overflowEdges().xStart ? \"\" : undefined',\n '[attr.data-overflow-x-end]': 'rootContext.overflowEdges().xEnd ? \"\" : undefined',\n '[attr.data-overflow-y-start]': 'rootContext.overflowEdges().yStart ? \"\" : undefined',\n '[attr.data-overflow-y-end]': 'rootContext.overflowEdges().yEnd ? \"\" : undefined',\n '[style.position]': '\"absolute\"',\n '[style.touch-action]': '\"none\"',\n '[style.user-select]': '\"none\"',\n '[style.display]': 'shouldRender() ? null : \"none\"',\n '[style.visibility]': 'hideTrackUntilMeasured() ? \"hidden\" : null',\n '[style.top]': 'orientation() === \"vertical\" ? \"0\" : null',\n '[style.bottom]': 'orientation() === \"vertical\" ? \"var(--scroll-area-corner-height)\" : \"0\"',\n '[style.inset-inline-start]': 'orientation() === \"horizontal\" ? \"0\" : null',\n '[style.inset-inline-end]': 'orientation() === \"vertical\" ? \"0\" : \"var(--scroll-area-corner-width)\"',\n '[style.--scroll-area-thumb-height]':\n 'orientation() === \"vertical\" ? rootContext.thumbSize().height + \"px\" : null',\n '[style.--scroll-area-thumb-width]':\n 'orientation() === \"horizontal\" ? rootContext.thumbSize().width + \"px\" : null',\n '(pointerdown)': 'onPointerDown($event)',\n '(pointerup)': 'rootContext.handlePointerUp($event)',\n '(pointercancel)': 'rootContext.handlePointerUp($event)',\n '(wheel)': 'onWheel($event)'\n }\n})\nexport class RdxScrollAreaScrollbar {\n protected readonly rootContext = injectScrollAreaRootContext();\n private readonly element: HTMLElement = inject(ElementRef).nativeElement;\n\n /** Whether the scrollbar controls vertical or horizontal scroll. */\n readonly orientation = input<ScrollbarOrientation>('vertical');\n\n /** Whether to keep the element rendered when the viewport isn't scrollable. */\n readonly keepMounted = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n protected readonly scrolling = computed(() =>\n this.orientation() === 'horizontal' ? this.rootContext.scrollingX() : this.rootContext.scrollingY()\n );\n\n private readonly isHidden = computed(() =>\n this.orientation() === 'vertical' ? this.rootContext.hiddenState().y : this.rootContext.hiddenState().x\n );\n\n protected readonly shouldRender = computed(() => this.keepMounted() || !this.isHidden());\n\n protected readonly hideTrackUntilMeasured = computed(\n () => !this.rootContext.hasMeasuredScrollbar() && !this.keepMounted()\n );\n\n constructor() {\n // Register this element as the vertical or horizontal scrollbar ref.\n // Runs as an effect so the bound `orientation` input is available.\n effect(() => {\n if (this.orientation() === 'vertical') {\n this.rootContext.scrollbarYRef.current = this.element;\n } else {\n this.rootContext.scrollbarXRef.current = this.element;\n }\n });\n }\n\n onWheel(event: WheelEvent): void {\n const viewportEl = this.rootContext.viewportRef.current;\n if (!viewportEl || event.ctrlKey) {\n return;\n }\n\n const horizontal = this.orientation() === 'horizontal';\n const delta = horizontal ? event.deltaX : event.deltaY;\n if (delta === 0) {\n return;\n }\n\n const direction = this.rootContext.direction();\n const maxScroll = horizontal\n ? viewportEl.scrollWidth - viewportEl.clientWidth\n : viewportEl.scrollHeight - viewportEl.clientHeight;\n // RTL horizontal scrolling uses a negative `scrollLeft` range, from 0 to `-maxScroll`.\n const minScroll = horizontal && direction === 'rtl' ? -maxScroll : 0;\n const maxScrollValue = horizontal && direction === 'rtl' ? 0 : maxScroll;\n const scrollValue = horizontal ? viewportEl.scrollLeft : viewportEl.scrollTop;\n\n // At an edge (or with no overflow), let the wheel chain to the parent/page.\n if ((scrollValue <= minScroll && delta < 0) || (scrollValue >= maxScrollValue && delta > 0)) {\n return;\n }\n\n event.preventDefault();\n\n const next = Math.min(maxScrollValue, Math.max(minScroll, scrollValue + delta));\n if (horizontal) {\n viewportEl.scrollLeft = next;\n } else {\n viewportEl.scrollTop = next;\n }\n\n this.rootContext.handleScroll({ x: viewportEl.scrollLeft, y: viewportEl.scrollTop });\n }\n\n onPointerDown(event: PointerEvent): void {\n if (event.button !== 0) {\n return;\n }\n\n const orientation = this.orientation();\n const target = event.target as Node | null;\n const thumb =\n orientation === 'vertical' ? this.rootContext.thumbYRef.current : this.rootContext.thumbXRef.current;\n\n // Ignore clicks on the thumb itself.\n if (thumb && target && thumb.contains(target)) {\n return;\n }\n\n const viewportEl = this.rootContext.viewportRef.current;\n if (!viewportEl) {\n return;\n }\n\n const direction = this.rootContext.direction();\n\n if (\n orientation === 'vertical' &&\n this.rootContext.thumbYRef.current &&\n this.rootContext.scrollbarYRef.current\n ) {\n const thumbEl = this.rootContext.thumbYRef.current;\n const scrollbarEl = this.rootContext.scrollbarYRef.current;\n const thumbYOffset = getOffset(thumbEl, 'margin', 'y');\n const scrollbarYOffset = getOffset(scrollbarEl, 'padding', 'y');\n const thumbHeight = thumbEl.offsetHeight;\n const trackRectY = scrollbarEl.getBoundingClientRect();\n const clickY = event.clientY - trackRectY.top - thumbHeight / 2 - scrollbarYOffset + thumbYOffset / 2;\n\n const maxThumbOffsetY = scrollbarEl.offsetHeight - thumbHeight - scrollbarYOffset - thumbYOffset;\n const scrollRatioY = clickY / maxThumbOffsetY;\n viewportEl.scrollTop = scrollRatioY * (viewportEl.scrollHeight - viewportEl.clientHeight);\n }\n\n if (\n orientation === 'horizontal' &&\n this.rootContext.thumbXRef.current &&\n this.rootContext.scrollbarXRef.current\n ) {\n const thumbEl = this.rootContext.thumbXRef.current;\n const scrollbarEl = this.rootContext.scrollbarXRef.current;\n const thumbXOffset = getOffset(thumbEl, 'margin', 'x');\n const scrollbarXOffset = getOffset(scrollbarEl, 'padding', 'x');\n const thumbWidth = thumbEl.offsetWidth;\n const trackRectX = scrollbarEl.getBoundingClientRect();\n const clickX = event.clientX - trackRectX.left - thumbWidth / 2 - scrollbarXOffset + thumbXOffset / 2;\n\n const maxThumbOffsetX = scrollbarEl.offsetWidth - thumbWidth - scrollbarXOffset - thumbXOffset;\n const scrollRatioX = clickX / maxThumbOffsetX;\n const scrollRange = viewportEl.scrollWidth - viewportEl.clientWidth;\n\n let newScrollLeft: number;\n if (direction === 'rtl') {\n newScrollLeft = (1 - scrollRatioX) * scrollRange;\n // Adjust for browsers that use negative scrollLeft in RTL.\n if (viewportEl.scrollLeft <= 0) {\n newScrollLeft = -newScrollLeft;\n }\n } else {\n newScrollLeft = scrollRatioX * scrollRange;\n }\n viewportEl.scrollLeft = newScrollLeft;\n }\n\n this.rootContext.handleScroll({ x: viewportEl.scrollLeft, y: viewportEl.scrollTop });\n this.rootContext.handlePointerDown(event);\n }\n}\n","import { Directive, effect, ElementRef, inject } from '@angular/core';\nimport { injectScrollAreaRootContext } from './scroll-area-root';\nimport { injectScrollAreaScrollbarContext } from './scroll-area-scrollbar';\n\n/**\n * The draggable part of the scrollbar that indicates the current scroll position.\n * Renders a `<div>` element.\n *\n * @group Components\n */\n@Directive({\n selector: '[rdxScrollAreaThumb]',\n exportAs: 'rdxScrollAreaThumb',\n host: {\n '[attr.data-orientation]': 'scrollbarContext.orientation()',\n '[style.visibility]': 'rootContext.hasMeasuredScrollbar() ? null : \"hidden\"',\n '[style.height]': 'scrollbarContext.orientation() === \"vertical\" ? \"var(--scroll-area-thumb-height)\" : null',\n '[style.width]': 'scrollbarContext.orientation() === \"horizontal\" ? \"var(--scroll-area-thumb-width)\" : null',\n '(pointerdown)': 'rootContext.handlePointerDown($event)',\n '(pointermove)': 'rootContext.handlePointerMove($event)',\n '(pointerup)': 'endDrag($event)',\n '(pointercancel)': 'endDrag($event)'\n }\n})\nexport class RdxScrollAreaThumb {\n protected readonly rootContext = injectScrollAreaRootContext();\n protected readonly scrollbarContext = injectScrollAreaScrollbarContext();\n private readonly element: HTMLElement = inject(ElementRef).nativeElement;\n\n constructor() {\n effect(() => {\n if (this.scrollbarContext.orientation() === 'vertical') {\n this.rootContext.thumbYRef.current = this.element;\n } else {\n this.rootContext.thumbXRef.current = this.element;\n }\n });\n }\n\n endDrag(event: PointerEvent): void {\n if (this.scrollbarContext.orientation() === 'vertical') {\n this.rootContext.setScrollingY(false);\n } else {\n this.rootContext.setScrollingX(false);\n }\n this.rootContext.handlePointerUp(event);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxScrollAreaContent } from './src/scroll-area-content';\nimport { RdxScrollAreaCorner } from './src/scroll-area-corner';\nimport { RdxScrollAreaRoot } from './src/scroll-area-root';\nimport { RdxScrollAreaScrollbar } from './src/scroll-area-scrollbar';\nimport { RdxScrollAreaThumb } from './src/scroll-area-thumb';\nimport { RdxScrollAreaViewport } from './src/scroll-area-viewport';\n\nexport * from './src/scroll-area-content';\nexport * from './src/scroll-area-corner';\nexport * from './src/scroll-area-root';\nexport * from './src/scroll-area-scrollbar';\nexport * from './src/scroll-area-thumb';\nexport * from './src/scroll-area-viewport';\n\nconst _imports = [\n RdxScrollAreaRoot,\n RdxScrollAreaViewport,\n RdxScrollAreaContent,\n RdxScrollAreaScrollbar,\n RdxScrollAreaThumb,\n RdxScrollAreaCorner\n];\n\n@NgModule({\n imports: [..._imports],\n exports: [..._imports]\n})\nexport class RdxScrollAreaModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radix-ng-primitives-select.mjs","sources":["../../../packages/primitives/select/src/utils.ts","../../../packages/primitives/select/src/select-root.ts","../../../packages/primitives/select/src/select-content.ts","../../../packages/primitives/select/src/select-group.ts","../../../packages/primitives/select/src/select-item.ts","../../../packages/primitives/select/src/select-item-indicator.ts","../../../packages/primitives/select/src/select-item-text.ts","../../../packages/primitives/select/src/select-label.ts","../../../packages/primitives/select/src/select-popper-position-content.ts","../../../packages/primitives/select/src/select-popper-position-wrapper.ts","../../../packages/primitives/select/src/select-portal.ts","../../../packages/primitives/select/src/select-portal-presence.ts","../../../packages/primitives/select/src/select-trigger.ts","../../../packages/primitives/select/src/select-value.ts","../../../packages/primitives/select/src/select-viewport.ts","../../../packages/primitives/select/index.ts","../../../packages/primitives/select/radix-ng-primitives-select.ts"],"sourcesContent":["import { AcceptableValue, getActiveElement, isEqual } from '@radix-ng/primitives/core';\n\nexport const OPEN_KEYS = [' ', 'Enter', 'ArrowUp', 'ArrowDown'];\nexport const SELECTION_KEYS = [' ', 'Enter'];\nexport const CONTENT_MARGIN = 10;\n\nexport function valueComparator<T>(\n value: T | T[] | undefined,\n currentValue: T,\n comparator?: string | ((a: T, b: T) => boolean)\n) {\n if (value === undefined) return false;\n else if (Array.isArray(value)) return value.some((val) => compare(val, currentValue, comparator));\n else return compare(value, currentValue, comparator);\n}\n\nexport function compare<T>(value?: T, currentValue?: T, comparator?: string | ((a: T, b: T) => boolean)) {\n if (value === undefined || currentValue === undefined) return false;\n\n if (typeof value === 'string') return value === currentValue;\n\n if (typeof comparator === 'function') return comparator(value, currentValue);\n\n if (typeof comparator === 'string') return value?.[comparator as keyof T] === currentValue?.[comparator as keyof T];\n\n return isEqual(value, currentValue);\n}\n\nexport function shouldShowPlaceholder(value?: AcceptableValue | AcceptableValue[]): boolean {\n return value === undefined || value === null || value === '' || (Array.isArray(value) && value.length === 0);\n}\n\nexport function focusFirst(candidates: HTMLElement[]) {\n const PREVIOUSLY_FOCUSED_ELEMENT = getActiveElement();\n for (const candidate of candidates) {\n // if focus is already where we want to go, we don't want to keep going through the candidates\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus();\n if (getActiveElement() !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\n","import { booleanAttribute, computed, Directive, inject, input, model, signal } from '@angular/core';\nimport { AcceptableValue, createContext, Direction, isNullish } from '@radix-ng/primitives/core';\nimport { RdxPopper } from '@radix-ng/primitives/popper';\nimport { compare, valueComparator } from './utils';\n\nexport interface SelectOption {\n value: any;\n disabled?: boolean;\n textContent: string;\n}\n\nconst context = () => {\n const context = inject(RdxSelectRoot);\n\n return {\n triggerElement: context.triggerElement,\n valueElement: context.valueElement,\n triggerPointerDownPosRef: context.triggerPointerDownPosRef,\n contentId: '',\n dir: context.dir,\n value: context.value,\n multiple: context.multiple,\n by: context.by,\n open: context.open,\n disabled: context.disabled,\n optionsSet: context.optionsSet,\n onOptionAdd: (option: any) => {\n const existingOption = context.getOption(option());\n if (existingOption) {\n context.optionsSet().delete(existingOption);\n }\n\n context.optionsSet().add(option());\n },\n onOptionRemove: (option: any) => {\n const existingOption = context.getOption(option());\n if (existingOption) {\n context.optionsSet().delete(existingOption);\n }\n },\n onValueChange: context.handleValueChange,\n onTriggerChange: (node: any) => {\n context.triggerElement.set(node.nativeElement);\n },\n onValueElementChange: (node: any) => {\n context.valueElement.set(node);\n },\n onOpenChange: (value: any) => {\n context.open.set(value);\n }\n };\n};\n\nexport type RdxSelectRootContext = ReturnType<typeof context>;\n\nexport const [injectSelectRootContext, provideSelectRootContext] =\n createContext<RdxSelectRootContext>('RdxSelectRootContext');\n\n@Directive({\n selector: '[rdxSelectRoot]',\n exportAs: 'rdxSelectRoot',\n providers: [provideSelectRootContext(context)],\n hostDirectives: [RdxPopper]\n})\nexport class RdxSelectRoot {\n readonly open = model<boolean>(false);\n\n readonly value = model<AcceptableValue | AcceptableValue[]>();\n\n readonly multiple = input(false, { transform: booleanAttribute });\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly dir = input<Direction>('ltr');\n\n /** Use this to compare objects by a particular field, or pass your own comparison function for complete control over how objects are compared. */\n readonly by = input<string | ((a: AcceptableValue, b: AcceptableValue) => boolean)>();\n\n readonly isEmptyModelValue = computed(() => {\n if (this.multiple() && Array.isArray(this.value())) {\n return Array(this.value())?.length === 0;\n } else {\n return isNullish(this.value());\n }\n });\n\n readonly optionsSet = signal<Set<SelectOption>>(new Set());\n\n // The native `select` only associates the correct default value if the corresponding\n // `option` is rendered as a child **at the same time** as itself.\n // Because it might take a few renders for our items to gather the information to build\n // the native `option`(s), we generate a key on the `select` to make sure Vue re-builds it\n // each time the options change.\n readonly nativeSelectKey = computed(() => {\n return Array.from(this.optionsSet())\n .map((option) => option.value)\n .join(';');\n });\n\n readonly triggerElement = signal<HTMLElement | null>(null);\n readonly valueElement = signal<HTMLElement | null>(null);\n readonly triggerPointerDownPosRef = signal<{ x: number; y: number } | null>({\n x: 0,\n y: 0\n });\n\n getOption(value: SelectOption['value']) {\n return Array.from(this.optionsSet()).find((option) => valueComparator(value, option.value, this.by()));\n }\n\n handleValueChange(value: AcceptableValue) {\n if (this.multiple()) {\n const array = Array.isArray(this.value()) ? [...Array(this.value())] : [];\n const index = array.findIndex((i) => compare(i, value, this.by()));\n index === -1 ? array.push(value) : array.splice(index, 1);\n this.value.set([...array]);\n } else {\n this.value.set(value);\n }\n }\n}\n","import {\n afterNextRender,\n ContentChild,\n Directive,\n effect,\n ElementRef,\n inject,\n InjectionToken,\n OutputRef,\n signal\n} from '@angular/core';\nimport { outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';\nimport { RdxCollectionProvider } from '@radix-ng/primitives/collection';\nimport { createContext } from '@radix-ng/primitives/core';\nimport { provideRdxDismissableLayerConfig, RdxDismissableLayer } from '@radix-ng/primitives/dismissable-layer';\nimport { RdxFocusScope } from '@radix-ng/primitives/focus-scope';\nimport { injectSelectRootContext } from './select-root';\nimport { focusFirst, valueComparator } from './utils';\n\nconst context = () => {\n const context = inject(RdxSelectContent);\n\n return {\n content: context.content,\n viewport: context.viewport,\n isPositioned: context.isPositioned,\n selectedItem: context.selectedItem,\n selectedItemText: context.selectedItemText,\n onViewportChange: (node: any) => {\n context.viewport.set(node);\n },\n onItemLeave: () => {\n context.content()?.focus();\n },\n itemRefCallback: (node: any, value: any, disabled: boolean) => {\n const isFirstValidItem = !context.firstValidItemFoundRef() && !disabled;\n const isSelectedItem = valueComparator(context.rootContext.value(), value, context.rootContext.by());\n\n if (isSelectedItem || isFirstValidItem) {\n context.selectedItem.set(node);\n }\n\n if (isFirstValidItem) {\n context.firstValidItemFoundRef.set(true);\n }\n },\n itemTextRefCallback: (node: any, value: any, disabled: any) => {\n const isFirstValidItem = !context.firstValidItemFoundRef() && !disabled;\n const isSelectedItem = valueComparator(context.rootContext.value(), value, context.rootContext.by());\n\n if (isSelectedItem || isFirstValidItem) {\n context.selectedItemText.set(node);\n }\n }\n };\n};\n\nexport type RdxSelectContentContext = ReturnType<typeof context>;\n\nexport const [injectSelectContentContext, provideSelectContentContext] =\n createContext<RdxSelectContentContext>('RdxSelectContent');\n\nexport interface RdxPositionerImpl {\n placed: OutputRef<any>;\n}\n\nexport const RDX_SELECT_POSITIONER_TOKEN = new InjectionToken<RdxPositionerImpl>('RDX_SELECT_POSITIONER_TOKEN');\n\n@Directive({\n selector: '[rdxSelectContent]',\n hostDirectives: [RdxFocusScope, RdxDismissableLayer, RdxCollectionProvider],\n providers: [\n provideSelectContentContext(context),\n provideRdxDismissableLayerConfig(() => {\n return {\n disableOutsidePointerEvents: signal(true)\n };\n })\n ],\n host: {\n role: 'listbox',\n '[attr.data-state]': 'rootContext.open() ? \"open\" : \"closed\"',\n '[dir]': 'rootContext.dir()',\n\n '(keydown)': 'handleKeyDown($event)',\n\n '[style]': `{\n display: 'flex',\n flexDirection: 'column',\n outline: 'none'\n }`\n }\n})\nexport class RdxSelectContent {\n private readonly dismissableLayer = inject(RdxDismissableLayer);\n private readonly currentElement = inject(ElementRef);\n private readonly collection = inject(RdxCollectionProvider);\n\n readonly rootContext = injectSelectRootContext()!;\n\n readonly selectedItem = signal<HTMLElement | undefined>(undefined);\n\n readonly selectedItemText = signal<HTMLElement | undefined>(undefined);\n\n readonly firstValidItemFoundRef = signal(false);\n\n readonly viewport = signal<HTMLElement | undefined>(undefined);\n\n readonly isPositioned = signal(false);\n\n /**\n * Event handler called when the escape key is down.\n * Can be prevented.\n */\n readonly escapeKeyDown = outputFromObservable(outputToObservable(this.dismissableLayer.escapeKeyDown));\n\n /**\n * Event handler called when a `pointerdown` event happens outside of the `DismissableLayer`.\n * Can be prevented.\n */\n readonly pointerDownOutside = outputFromObservable(outputToObservable(this.dismissableLayer.pointerDownOutside));\n\n readonly content = signal<HTMLElement | null>(null);\n\n @ContentChild(RDX_SELECT_POSITIONER_TOKEN, { descendants: true })\n set positioner(port: RdxPositionerImpl | undefined) {\n if (port) {\n port.placed.subscribe(() => {\n this.focusSelectedItem();\n this.isPositioned.set(true);\n });\n }\n }\n\n constructor() {\n this.dismissableLayer.focusOutside.subscribe((e) => e.preventDefault());\n\n this.dismissableLayer.dismiss.subscribe(() => this.rootContext.onOpenChange(false));\n\n const focusScope = inject(RdxFocusScope);\n\n afterNextRender(() => {\n focusScope.unmountAutoFocus.subscribe((event) => {\n if (event.defaultPrevented) return;\n\n this.rootContext.triggerElement()?.focus({ preventScroll: true });\n\n event.preventDefault();\n });\n\n focusScope.mountAutoFocus.subscribe((event) => {\n event.preventDefault();\n });\n\n this.content.set(this.currentElement.nativeElement.firstElementChild);\n });\n\n effect((onCleanup) => {\n if (!this.content()) return;\n\n let pointerMoveDelta = { x: 0, y: 0 };\n\n const handlePointerMove = (event: PointerEvent) => {\n pointerMoveDelta = {\n x: Math.abs(Math.round(event.pageX) - (this.rootContext.triggerPointerDownPosRef()?.x ?? 0)),\n y: Math.abs(Math.round(event.pageY) - (this.rootContext.triggerPointerDownPosRef()?.y ?? 0))\n };\n };\n\n const handlePointerUp = (event: PointerEvent) => {\n // Prevent options from being untappable on touch devices\n if (event.pointerType === 'touch') return;\n\n // If the pointer hasn't moved by a certain threshold then we prevent selecting item on `pointerup`.\n if (pointerMoveDelta.x <= 10 && pointerMoveDelta.y <= 10) {\n event.preventDefault();\n } else {\n // otherwise, if the event was outside the content, close.\n if (!this.content()?.contains(event.target as HTMLElement)) this.rootContext.onOpenChange(false);\n }\n document.removeEventListener('pointermove', handlePointerMove);\n this.rootContext.triggerPointerDownPosRef.set(null);\n };\n\n if (this.rootContext.triggerPointerDownPosRef() !== null) {\n document.addEventListener('pointermove', handlePointerMove);\n document.addEventListener('pointerup', handlePointerUp, {\n capture: true,\n once: true\n });\n }\n\n onCleanup(() => {\n document.removeEventListener('pointermove', handlePointerMove);\n document.removeEventListener('pointerup', handlePointerUp, {\n capture: true\n });\n });\n });\n }\n\n focusSelectedItem() {\n if (this.selectedItem() && this.content()) {\n focusFirst([this.selectedItem()!, this.content()!]);\n }\n }\n\n handleKeyDown(event: Event) {\n const keyEvent = event as KeyboardEvent;\n // select should not be navigated using tab key so we prevent it\n if (keyEvent.key === 'Tab') event.preventDefault();\n\n if (['ArrowUp', 'ArrowDown', 'Home', 'End'].includes(keyEvent.key)) {\n const collectionItems = this.collection.items().map((i) => i.element);\n let candidateNodes = [...collectionItems];\n\n if (['ArrowUp', 'End'].includes(keyEvent.key)) candidateNodes = candidateNodes.slice().reverse();\n\n if (['ArrowUp', 'ArrowDown'].includes(keyEvent.key)) {\n const currentElement = event.target as HTMLElement;\n const currentIndex = candidateNodes.indexOf(currentElement);\n candidateNodes = candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n event.preventDefault();\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectId } from '@radix-ng/primitives/core';\n\n@Directive({\n selector: '[rdxSelectGroup]',\n exportAs: 'rdxSelectGroup',\n host: {\n role: 'group',\n '[attr.aria-labelledby]': 'id'\n }\n})\nexport class RdxSelectGroup {\n readonly id = injectId('rdx-select-group-');\n}\n","import {\n afterNextRender,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n linkedSignal,\n signal\n} from '@angular/core';\nimport { RdxCollectionItem } from '@radix-ng/primitives/collection';\nimport { createContext, getActiveElement, handleAndDispatchCustomEvent, injectId } from '@radix-ng/primitives/core';\nimport { injectSelectContentContext } from './select-content';\nimport { injectSelectRootContext } from './select-root';\nimport { SELECTION_KEYS, valueComparator } from './utils';\n\nconst context = () => {\n const context = inject(RdxSelectItem);\n return {\n value: context.value,\n disabled: context.disabled,\n isSelected: context.isSelected,\n textId: context.textId,\n\n onItemTextChange: (node: any) => {\n context.textValue$.set(((context.textValue$() || node.textContent) ?? '').trim());\n }\n };\n};\n\nexport type RdxSelectItemContext = ReturnType<typeof context>;\n\nexport const [injectSelectItemContext, provideSelectItemContext] =\n createContext<RdxSelectItemContext>('RdxSelectItemContext');\n\nexport type SelectEvent = CustomEvent<{ originalEvent: PointerEvent | KeyboardEvent; value?: any }>;\n\n@Directive({\n selector: '[rdxSelectItem]',\n providers: [provideSelectItemContext(context)],\n hostDirectives: [\n {\n directive: RdxCollectionItem,\n inputs: ['value']\n }\n ],\n host: {\n role: 'option',\n '[attr.tabindex]': 'disabled() ? undefined : -1',\n '[attr.aria-selected]': 'isSelected() ? \"checked\" : \"unchecked\"',\n '[attr.data-state]': 'isSelected() ? \"checked\" : \"unchecked\"',\n '[attr.data-highlighted]': 'isFocused() ? \"\" : undefined',\n '(focus)': 'isFocused.set(true)',\n '(blur)': 'isFocused.set(false)',\n '(pointerdown)': 'onPointerDown($event)',\n '(pointerup)': 'onPointerUp($event)',\n '(pointerleave)': 'onPointerLeave($event)',\n '(pointermove)': 'onPointerMove($event)',\n '(keydown)': 'handleKeyDown($event)'\n }\n})\nexport class RdxSelectItem {\n private readonly rootContext = injectSelectRootContext()!;\n private readonly contentContext = injectSelectContentContext()!;\n\n private readonly currentElement = inject(ElementRef);\n\n readonly value = input<any>();\n\n readonly textValue = input<string>('');\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly textValue$ = linkedSignal(this.textValue);\n\n readonly isSelected = computed(() =>\n valueComparator(this.rootContext.value(), this.value(), this.rootContext.by())\n );\n\n readonly isFocused = signal(false);\n\n readonly textId = injectId('rdx-select-item-text-');\n\n private readonly afterNextRender = afterNextRender(() => {\n this.contentContext.itemRefCallback(this.currentElement.nativeElement, this.value(), this.disabled());\n });\n\n private SELECT_SELECT = 'select.select';\n\n onPointerDown(event: Event) {\n (event.currentTarget as HTMLElement).focus({ preventScroll: true });\n }\n\n onPointerUp(event: PointerEvent | KeyboardEvent) {\n if (event.defaultPrevented) return;\n\n const eventDetail = { originalEvent: event, value: this.value() };\n\n handleAndDispatchCustomEvent(\n this.SELECT_SELECT,\n async (event: SelectEvent) => {\n if (event.defaultPrevented) return;\n\n this.rootContext.onValueChange(this.value());\n if (!this.rootContext.multiple()) {\n this.rootContext.onOpenChange(false);\n }\n },\n eventDetail\n );\n }\n\n onPointerLeave(event: Event) {\n if (event.defaultPrevented) return;\n\n if (event.currentTarget === getActiveElement()) this.contentContext.onItemLeave?.();\n }\n\n onPointerMove(event: Event) {\n if (event.defaultPrevented) return;\n if (this.disabled()) {\n this.contentContext.onItemLeave?.();\n } else {\n // even though safari doesn't support this option, it's acceptable\n // as it only means it might scroll a few pixels when using the pointer.\n (event.currentTarget as HTMLElement | null)?.focus({ preventScroll: true });\n }\n }\n\n handleKeyDown(event: Event) {\n const keyEvent = event as KeyboardEvent;\n if (event.defaultPrevented) return;\n\n if (SELECTION_KEYS.includes(keyEvent.key)) this.handleSelectCustomEvent(keyEvent);\n\n // prevent page scroll if using the space key to select an item\n if (keyEvent.key === ' ') event.preventDefault();\n }\n\n async handleSelectCustomEvent(event: PointerEvent | KeyboardEvent) {\n if (event.defaultPrevented) return;\n\n const eventDetail = { originalEvent: event, value: this.value() };\n handleAndDispatchCustomEvent(\n this.SELECT_SELECT,\n async (event: SelectEvent) => {\n if (event.defaultPrevented) return;\n\n if (!this.disabled()) {\n this.rootContext.onValueChange(this.value());\n if (!this.rootContext.multiple()) this.rootContext.onOpenChange(false);\n }\n },\n eventDetail\n );\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectSelectItemContext } from './select-item';\n\n@Directive({\n selector: '[rdxSelectItemIndicator]',\n host: {\n '[attr.aria-hidden]': 'true',\n '[hidden]': '!itemContext.isSelected()'\n }\n})\nexport class RdxSelectItemIndicator {\n readonly itemContext = injectSelectItemContext()!;\n}\n","import { afterNextRender, computed, DestroyRef, Directive, ElementRef, inject } from '@angular/core';\nimport { injectSelectContentContext } from './select-content';\nimport { injectSelectItemContext } from './select-item';\nimport { injectSelectRootContext } from './select-root';\n\n@Directive({\n selector: '[rdxSelectItemText]',\n host: {\n '[id]': 'itemContext.textId'\n }\n})\nexport class RdxSelectItemText {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly rootContext = injectSelectRootContext()!;\n readonly contentContext = injectSelectContentContext()!;\n readonly itemContext = injectSelectItemContext()!;\n\n readonly optionProps = computed(() => {\n return {\n value: this.itemContext.value(),\n disabled: this.itemContext.disabled(),\n textContent: this.elementRef.nativeElement.textContent ?? this.itemContext.value()?.toString() ?? ''\n };\n });\n\n constructor() {\n afterNextRender(() => {\n this.itemContext.onItemTextChange(this.elementRef.nativeElement);\n this.contentContext.itemTextRefCallback(\n this.elementRef.nativeElement,\n this.itemContext.value(),\n this.itemContext.disabled()\n );\n\n this.rootContext.onOptionAdd(this.optionProps);\n });\n\n const destroyRef = inject(DestroyRef);\n\n destroyRef.onDestroy(() => {\n this.rootContext.onOptionRemove(this.optionProps);\n });\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[rdxSelectLabel]',\n host: {}\n})\nexport class RdxSelectLabel {}\n","import { Directive } from '@angular/core';\nimport { RdxPopperContent } from '@radix-ng/primitives/popper';\nimport { injectSelectRootContext } from './select-root';\n\n@Directive({\n selector: '[rdxSelectPopperPositionContent]',\n hostDirectives: [RdxPopperContent],\n host: {\n role: 'listbox',\n '[id]': 'rootContext.contentId'\n }\n})\nexport class RdxSelectPopperPositionContent {\n protected rootContext = injectSelectRootContext()!;\n}\n","import { booleanAttribute, Directive, ElementRef, forwardRef, inject, input, numberAttribute } from '@angular/core';\nimport { outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';\nimport { Align, RdxPopperContentWrapper, Side } from '@radix-ng/primitives/popper';\nimport { RDX_SELECT_POSITIONER_TOKEN, RdxPositionerImpl } from './select-content';\n\n@Directive({\n selector: '[rdxSelectPopperPositionWrapper]',\n providers: [\n {\n provide: RDX_SELECT_POSITIONER_TOKEN,\n useExisting: forwardRef(() => RdxSelectPopperPositionWrapper)\n }\n ],\n hostDirectives: [\n {\n directive: RdxPopperContentWrapper,\n inputs: [\n 'side',\n 'sideOffset',\n 'align',\n 'alignOffset',\n 'arrowPadding',\n 'avoidCollisions',\n 'collisionBoundary',\n 'collisionPadding',\n 'sticky',\n 'hideWhenDetached',\n 'updatePositionStrategy'\n ]\n }\n ],\n host: {\n // re-namespace exposed content custom properties\n '[style]': `{\n 'boxSizing': 'border-box',\n '--radix-tooltip-content-transform-origin': 'var(--radix-popper-transform-origin)',\n '--radix-tooltip-content-available-width': 'var(--radix-popper-available-width)',\n '--radix-tooltip-content-available-height': 'var(--radix-popper-available-height)',\n '--radix-tooltip-trigger-width': 'var(--radix-popper-anchor-width)',\n '--radix-tooltip-trigger-height': 'var(--radix-popper-anchor-height)',\n }`\n }\n})\nexport class RdxSelectPopperPositionWrapper implements RdxPositionerImpl {\n /**\n * The preferred side of the anchor to render against when open.\n * Will be reversed when collisions occur and avoidCollisions is enabled.\n */\n readonly side = input<Side>('bottom');\n\n /**\n * The distance in pixels from the anchor.\n */\n readonly sideOffset = input(0, { transform: numberAttribute });\n\n /**\n * The preferred alignment against the anchor. May change when collisions occur.\n */\n readonly align = input<Align>('start');\n\n /**\n * An offset in pixels from the `start` or `end` alignment options.\n */\n readonly alignOffset = input(0, { transform: numberAttribute });\n\n /**\n * The padding between the arrow and the edges of the content.\n * If your content has border-radius, this will prevent it from overflowing the corners.\n */\n readonly arrowPadding = input(0, { transform: numberAttribute });\n\n /**\n * When `true`, overrides the `side` and `align` preferences to prevent collisions with boundary edges.\n */\n readonly avoidCollisions = input(true, { transform: booleanAttribute });\n\n /**\n * The element used as the collision boundary.\n * By default this is the viewport, though you can provide additional element(s) to be included in this check.\n */\n readonly collisionBoundary = input<ElementRef<HTMLElement> | ElementRef<HTMLElement>[]>();\n\n /**\n * The distance in pixels from the boundary edges where collision detection should occur.\n * Accepts a number (same for all sides), or a partial padding object, for example: `{ top: 20, left: 20 }`.\n */\n readonly collisionPadding = input<number | Partial<Record<Side, number>>>(0);\n\n /**\n * The sticky behavior on the `align` axis.\n * - `partial` will keep the content in the boundary as long as the trigger is at least partially in the boundary\n * - `always` will keep the content in the boundary regardless.\n */\n readonly sticky = input<'partial' | 'always'>('partial');\n\n /**\n * Whether to hide the content when the trigger becomes fully occluded.\n */\n readonly hideWhenDetached = input(false, { transform: booleanAttribute });\n\n /**\n * Whether to update the position of the floating element on every animation frame if required.\n */\n readonly updatePositionStrategy = input<'optimized' | 'always'>('always');\n\n /**\n * Emits when the element is placed.\n */\n readonly placed = outputFromObservable(outputToObservable(inject(RdxPopperContentWrapper).placed));\n}\n","import { Directive, input } from '@angular/core';\nimport { RdxPortal, RdxPortalContainer } from '@radix-ng/primitives/portal';\n\n@Directive({\n selector: '[rdxSelectPortal]',\n hostDirectives: [\n {\n directive: RdxPortal,\n inputs: ['container']\n }\n ]\n})\nexport class RdxSelectPortal {\n /**\n * Optional container to portal the content into. Defaults to `document.body` when not set.\n */\n readonly container = input<RdxPortalContainer>();\n}\n","import { Directive } from '@angular/core';\nimport { provideRdxPresenceContext, RdxPresenceDirective } from '@radix-ng/primitives/presence';\nimport { injectSelectRootContext } from './select-root';\n\n@Directive({\n selector: 'ng-template[rdxSelectPortalPresence]',\n hostDirectives: [RdxPresenceDirective],\n providers: [\n provideRdxPresenceContext(() => {\n const context = injectSelectRootContext()!;\n\n return { present: context.open };\n })\n ]\n})\nexport class RdxSelectPortalPresence {}\n","import { afterNextRender, booleanAttribute, computed, Directive, ElementRef, inject, input } from '@angular/core';\nimport { RdxPopperAnchor } from '@radix-ng/primitives/popper';\nimport { injectSelectRootContext } from './select-root';\nimport { OPEN_KEYS } from './utils';\n\n@Directive({\n selector: 'button[rdxSelectTrigger]',\n hostDirectives: [RdxPopperAnchor],\n host: {\n role: 'combobox',\n type: 'button',\n '[attr.disabled]': 'isDisabled() ? \"\" : undefined',\n '[dir]': 'rootContext.dir()',\n '[attr.data-state]': 'rootContext.open() ? \"open\" : \"closed\"',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '(click)': 'onClickHandler($event)',\n '(pointerdown)': 'onPointerDown($event)',\n '(pointerup)': 'onPointerUp($event)',\n '(keydown)': 'onKeydown($event)'\n }\n})\nexport class RdxSelectTrigger {\n readonly rootContext = injectSelectRootContext()!;\n\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly isDisabled = computed(() => this.rootContext.disabled() || this.disabled());\n\n constructor() {\n afterNextRender(() => {\n this.rootContext.onTriggerChange(this.elementRef);\n });\n }\n\n handleOpen() {\n if (!this.isDisabled()) {\n this.rootContext.onOpenChange(true);\n }\n }\n\n handlePointerOpen(event: Event) {\n const pointerEvent = event as PointerEvent;\n this.handleOpen();\n this.rootContext.triggerPointerDownPosRef.set({\n x: Math.round(pointerEvent.pageX),\n y: Math.round(pointerEvent.pageY)\n });\n }\n\n onClickHandler(event: Event) {\n // Whilst browsers generally have no issue focusing the trigger when clicking\n // on a label, Safari seems to struggle with the fact that there's no `onClick`.\n // We force `focus` in this case. Note: this doesn't create any other side-effect\n // because we are preventing default in `onPointerDown` so effectively\n // this only runs for a label 'click'\n (event?.currentTarget as HTMLElement)?.focus();\n }\n\n onPointerDown(event: Event) {\n const pointerEvent = event as PointerEvent;\n if (pointerEvent.pointerType === 'touch') return event.preventDefault();\n\n // prevent implicit pointer capture\n // https://www.w3.org/TR/pointerevents3/#implicit-pointer-capture\n const target = event.target as HTMLElement;\n if (target.hasPointerCapture(pointerEvent.pointerId)) {\n target.releasePointerCapture(pointerEvent.pointerId);\n }\n\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click)\n if (pointerEvent.button === 0 && pointerEvent.ctrlKey === false) {\n this.handlePointerOpen(event);\n // prevent trigger from stealing focus from the active item after opening.\n event.preventDefault();\n }\n }\n\n onPointerUp(event: Event) {\n const pointerEvent = event as PointerEvent;\n event.preventDefault();\n // Only open on pointer up when using touch devices\n if (pointerEvent.pointerType === 'touch') this.handlePointerOpen(event);\n }\n\n onKeydown(event: Event) {\n const keyEvent = event as KeyboardEvent;\n if (OPEN_KEYS.includes(keyEvent.key)) {\n this.handleOpen();\n event.preventDefault();\n }\n }\n}\n","import { afterNextRender, computed, Directive, ElementRef, inject, input } from '@angular/core';\nimport { AcceptableValue } from '@radix-ng/primitives/core';\nimport { injectSelectRootContext } from './select-root';\nimport { valueComparator } from './utils';\n\n@Directive({\n selector: 'span[rdxSelectValue]',\n exportAs: 'rdxSelectedValue',\n host: {\n '[style.pointer-events]': '\"none\"'\n }\n})\nexport class RdxSelectValue {\n readonly rootContext = injectSelectRootContext()!;\n\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly placeholder = input<string>();\n\n readonly slotText = computed(() => {\n return this.selectedLabel().length ? this.selectedLabel().join(', ') : this.placeholder();\n });\n\n readonly selectedLabel = computed(() => {\n // eslint-disable-next-line no-useless-assignment\n let list: string[] = [];\n const options = Array.from(this.rootContext.optionsSet());\n\n const getOption = (value?: AcceptableValue) =>\n options.find((option) => valueComparator(value, option.value, this.rootContext.by()));\n if (Array.isArray(this.rootContext.value())) {\n list = Array(this.rootContext.value()).map((value) => getOption(value)?.textContent ?? '');\n } else {\n list = [getOption(this.rootContext.value())?.textContent ?? ''];\n }\n return list.filter(Boolean);\n });\n\n constructor() {\n afterNextRender(() => {\n this.rootContext.valueElement.set(this.elementRef.nativeElement);\n });\n }\n}\n","import { afterNextRender, Directive, ElementRef, inject, signal } from '@angular/core';\nimport { injectSelectContentContext } from './select-content';\n\n@Directive({\n selector: '[rdxSelectViewport]',\n host: {\n role: 'presentation',\n '[attr.data-rdx-select-viewport]': '\"\"',\n '[style]': `{\n position: 'relative',\n flex: 1,\n overflow: 'hidden auto',\n scrollbarWidth: 'none'\n }`,\n '(scroll)': 'handleScroll($event)'\n }\n})\nexport class RdxSelectViewport {\n private readonly contentContext = injectSelectContentContext()!;\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n private readonly prevScrollTopRef = signal(0);\n\n constructor() {\n afterNextRender(() => {\n this.contentContext?.onViewportChange(this.elementRef.nativeElement);\n });\n }\n\n handleScroll(event: Event) {\n const viewport = event.currentTarget as HTMLElement;\n\n this.prevScrollTopRef.set(viewport.scrollTop);\n }\n}\n","import { RdxSelectContent } from './src/select-content';\nimport { RdxSelectGroup } from './src/select-group';\nimport { RdxSelectItem } from './src/select-item';\nimport { RdxSelectItemIndicator } from './src/select-item-indicator';\nimport { RdxSelectItemText } from './src/select-item-text';\nimport { RdxSelectLabel } from './src/select-label';\nimport { RdxSelectPopperPositionContent } from './src/select-popper-position-content';\nimport { RdxSelectPopperPositionWrapper } from './src/select-popper-position-wrapper';\nimport { RdxSelectPortal } from './src/select-portal';\nimport { RdxSelectPortalPresence } from './src/select-portal-presence';\nimport { RdxSelectRoot } from './src/select-root';\nimport { RdxSelectTrigger } from './src/select-trigger';\nimport { RdxSelectValue } from './src/select-value';\nimport { RdxSelectViewport } from './src/select-viewport';\n\nexport * from './src/select-content';\nexport * from './src/select-group';\nexport * from './src/select-item';\nexport * from './src/select-item-indicator';\nexport * from './src/select-item-text';\nexport * from './src/select-label';\nexport * from './src/select-popper-position-content';\nexport * from './src/select-popper-position-wrapper';\nexport * from './src/select-portal';\nexport * from './src/select-portal-presence';\nexport * from './src/select-root';\nexport * from './src/select-trigger';\nexport * from './src/select-value';\nexport * from './src/select-viewport';\nexport * from './src/utils';\n\nexport const _importsSelect = [\n RdxSelectRoot,\n RdxSelectPortal,\n RdxSelectTrigger,\n RdxSelectValue,\n RdxSelectContent,\n RdxSelectViewport,\n RdxSelectItemIndicator,\n RdxSelectItem,\n RdxSelectItemText,\n RdxSelectLabel,\n RdxSelectGroup,\n RdxSelectPopperPositionContent,\n RdxSelectPopperPositionWrapper,\n RdxSelectPortalPresence\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["context","i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"radix-ng-primitives-select.mjs","sources":["../../../packages/primitives/select/src/utils.ts","../../../packages/primitives/select/src/select-root.ts","../../../packages/primitives/select/src/select-content.ts","../../../packages/primitives/select/src/select-group.ts","../../../packages/primitives/select/src/select-item.ts","../../../packages/primitives/select/src/select-item-indicator.ts","../../../packages/primitives/select/src/select-item-text.ts","../../../packages/primitives/select/src/select-label.ts","../../../packages/primitives/select/src/select-popper-position-content.ts","../../../packages/primitives/select/src/select-popper-position-wrapper.ts","../../../packages/primitives/select/src/select-portal.ts","../../../packages/primitives/select/src/select-portal-presence.ts","../../../packages/primitives/select/src/select-trigger.ts","../../../packages/primitives/select/src/select-value.ts","../../../packages/primitives/select/src/select-viewport.ts","../../../packages/primitives/select/index.ts","../../../packages/primitives/select/radix-ng-primitives-select.ts"],"sourcesContent":["import { AcceptableValue, getActiveElement, isEqual } from '@radix-ng/primitives/core';\n\nexport const OPEN_KEYS = [' ', 'Enter', 'ArrowUp', 'ArrowDown'];\nexport const SELECTION_KEYS = [' ', 'Enter'];\nexport const CONTENT_MARGIN = 10;\n\nexport function valueComparator<T>(\n value: T | T[] | undefined,\n currentValue: T,\n comparator?: string | ((a: T, b: T) => boolean)\n) {\n if (value === undefined) return false;\n else if (Array.isArray(value)) return value.some((val) => compare(val, currentValue, comparator));\n else return compare(value, currentValue, comparator);\n}\n\nexport function compare<T>(value?: T, currentValue?: T, comparator?: string | ((a: T, b: T) => boolean)) {\n if (value === undefined || currentValue === undefined) return false;\n\n if (typeof value === 'string') return value === currentValue;\n\n if (typeof comparator === 'function') return comparator(value, currentValue);\n\n if (typeof comparator === 'string') return value?.[comparator as keyof T] === currentValue?.[comparator as keyof T];\n\n return isEqual(value, currentValue);\n}\n\nexport function shouldShowPlaceholder(value?: AcceptableValue | AcceptableValue[]): boolean {\n return value === undefined || value === null || value === '' || (Array.isArray(value) && value.length === 0);\n}\n\nexport function focusFirst(candidates: HTMLElement[]) {\n const PREVIOUSLY_FOCUSED_ELEMENT = getActiveElement();\n for (const candidate of candidates) {\n // if focus is already where we want to go, we don't want to keep going through the candidates\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus();\n if (getActiveElement() !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\n","import { booleanAttribute, computed, Directive, inject, input, model, signal } from '@angular/core';\nimport { AcceptableValue, createContext, Direction, isNullish } from '@radix-ng/primitives/core';\nimport { RdxPopper } from '@radix-ng/primitives/popper';\nimport { compare, valueComparator } from './utils';\n\nexport interface SelectOption {\n value: any;\n disabled?: boolean;\n textContent: string;\n}\n\nconst context = () => {\n const context = inject(RdxSelectRoot);\n\n return {\n triggerElement: context.triggerElement,\n valueElement: context.valueElement,\n triggerPointerDownPosRef: context.triggerPointerDownPosRef,\n contentId: '',\n dir: context.dir,\n value: context.value,\n multiple: context.multiple,\n by: context.by,\n open: context.open,\n disabled: context.disabled,\n optionsSet: context.optionsSet,\n onOptionAdd: (option: any) => {\n const existingOption = context.getOption(option());\n if (existingOption) {\n context.optionsSet().delete(existingOption);\n }\n\n context.optionsSet().add(option());\n },\n onOptionRemove: (option: any) => {\n const existingOption = context.getOption(option());\n if (existingOption) {\n context.optionsSet().delete(existingOption);\n }\n },\n onValueChange: context.handleValueChange,\n onTriggerChange: (node: any) => {\n context.triggerElement.set(node.nativeElement);\n },\n onValueElementChange: (node: any) => {\n context.valueElement.set(node);\n },\n onOpenChange: (value: any) => {\n context.open.set(value);\n }\n };\n};\n\nexport type RdxSelectRootContext = ReturnType<typeof context>;\n\nexport const [injectSelectRootContext, provideSelectRootContext] =\n createContext<RdxSelectRootContext>('RdxSelectRootContext');\n\n@Directive({\n selector: '[rdxSelectRoot]',\n exportAs: 'rdxSelectRoot',\n providers: [provideSelectRootContext(context)],\n hostDirectives: [RdxPopper]\n})\nexport class RdxSelectRoot {\n readonly open = model<boolean>(false);\n\n readonly value = model<AcceptableValue | AcceptableValue[]>();\n\n readonly multiple = input(false, { transform: booleanAttribute });\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly dir = input<Direction>('ltr');\n\n /** Use this to compare objects by a particular field, or pass your own comparison function for complete control over how objects are compared. */\n readonly by = input<string | ((a: AcceptableValue, b: AcceptableValue) => boolean)>();\n\n readonly isEmptyModelValue = computed(() => {\n if (this.multiple() && Array.isArray(this.value())) {\n return Array(this.value())?.length === 0;\n } else {\n return isNullish(this.value());\n }\n });\n\n readonly optionsSet = signal<Set<SelectOption>>(new Set());\n\n // The native `select` only associates the correct default value if the corresponding\n // `option` is rendered as a child **at the same time** as itself.\n // Because it might take a few renders for our items to gather the information to build\n // the native `option`(s), we generate a key on the `select` to make sure Vue re-builds it\n // each time the options change.\n readonly nativeSelectKey = computed(() => {\n return Array.from(this.optionsSet())\n .map((option) => option.value)\n .join(';');\n });\n\n readonly triggerElement = signal<HTMLElement | null>(null);\n readonly valueElement = signal<HTMLElement | null>(null);\n readonly triggerPointerDownPosRef = signal<{ x: number; y: number } | null>({\n x: 0,\n y: 0\n });\n\n getOption(value: SelectOption['value']) {\n return Array.from(this.optionsSet()).find((option) => valueComparator(value, option.value, this.by()));\n }\n\n handleValueChange(value: AcceptableValue) {\n if (this.multiple()) {\n const array = Array.isArray(this.value()) ? [...Array(this.value())] : [];\n const index = array.findIndex((i) => compare(i, value, this.by()));\n index === -1 ? array.push(value) : array.splice(index, 1);\n this.value.set([...array]);\n } else {\n this.value.set(value);\n }\n }\n}\n","import {\n afterNextRender,\n ContentChild,\n Directive,\n effect,\n ElementRef,\n inject,\n InjectionToken,\n OutputRef,\n signal\n} from '@angular/core';\nimport { outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';\nimport { RdxCollectionProvider } from '@radix-ng/primitives/collection';\nimport { createContext } from '@radix-ng/primitives/core';\nimport { provideRdxDismissableLayerConfig, RdxDismissableLayer } from '@radix-ng/primitives/dismissable-layer';\nimport { RdxFocusScope } from '@radix-ng/primitives/focus-scope';\nimport { injectSelectRootContext } from './select-root';\nimport { focusFirst, valueComparator } from './utils';\n\nconst context = () => {\n const context = inject(RdxSelectContent);\n\n return {\n content: context.content,\n viewport: context.viewport,\n isPositioned: context.isPositioned,\n selectedItem: context.selectedItem,\n selectedItemText: context.selectedItemText,\n onViewportChange: (node: any) => {\n context.viewport.set(node);\n },\n onItemLeave: () => {\n context.content()?.focus();\n },\n itemRefCallback: (node: any, value: any, disabled: boolean) => {\n const isFirstValidItem = !context.firstValidItemFoundRef() && !disabled;\n const isSelectedItem = valueComparator(context.rootContext.value(), value, context.rootContext.by());\n\n if (isSelectedItem || isFirstValidItem) {\n context.selectedItem.set(node);\n }\n\n if (isFirstValidItem) {\n context.firstValidItemFoundRef.set(true);\n }\n },\n itemTextRefCallback: (node: any, value: any, disabled: any) => {\n const isFirstValidItem = !context.firstValidItemFoundRef() && !disabled;\n const isSelectedItem = valueComparator(context.rootContext.value(), value, context.rootContext.by());\n\n if (isSelectedItem || isFirstValidItem) {\n context.selectedItemText.set(node);\n }\n }\n };\n};\n\nexport type RdxSelectContentContext = ReturnType<typeof context>;\n\nexport const [injectSelectContentContext, provideSelectContentContext] =\n createContext<RdxSelectContentContext>('RdxSelectContent');\n\nexport interface RdxPositionerImpl {\n placed: OutputRef<any>;\n}\n\nexport const RDX_SELECT_POSITIONER_TOKEN = new InjectionToken<RdxPositionerImpl>('RDX_SELECT_POSITIONER_TOKEN');\n\n@Directive({\n selector: '[rdxSelectContent]',\n hostDirectives: [RdxFocusScope, RdxDismissableLayer, RdxCollectionProvider],\n providers: [\n provideSelectContentContext(context),\n provideRdxDismissableLayerConfig(() => {\n return {\n disableOutsidePointerEvents: signal(true)\n };\n })\n ],\n host: {\n role: 'listbox',\n '[attr.data-state]': 'rootContext.open() ? \"open\" : \"closed\"',\n '[dir]': 'rootContext.dir()',\n\n '(keydown)': 'handleKeyDown($event)',\n\n '[style]': `{\n display: 'flex',\n flexDirection: 'column',\n outline: 'none'\n }`\n }\n})\nexport class RdxSelectContent {\n private readonly dismissableLayer = inject(RdxDismissableLayer);\n private readonly currentElement = inject(ElementRef);\n private readonly collection = inject(RdxCollectionProvider);\n\n readonly rootContext = injectSelectRootContext();\n\n readonly selectedItem = signal<HTMLElement | undefined>(undefined);\n\n readonly selectedItemText = signal<HTMLElement | undefined>(undefined);\n\n readonly firstValidItemFoundRef = signal(false);\n\n readonly viewport = signal<HTMLElement | undefined>(undefined);\n\n readonly isPositioned = signal(false);\n\n /**\n * Event handler called when the escape key is down.\n * Can be prevented.\n */\n readonly escapeKeyDown = outputFromObservable(outputToObservable(this.dismissableLayer.escapeKeyDown));\n\n /**\n * Event handler called when a `pointerdown` event happens outside of the `DismissableLayer`.\n * Can be prevented.\n */\n readonly pointerDownOutside = outputFromObservable(outputToObservable(this.dismissableLayer.pointerDownOutside));\n\n readonly content = signal<HTMLElement | null>(null);\n\n @ContentChild(RDX_SELECT_POSITIONER_TOKEN, { descendants: true })\n set positioner(port: RdxPositionerImpl | undefined) {\n if (port) {\n port.placed.subscribe(() => {\n this.focusSelectedItem();\n this.isPositioned.set(true);\n });\n }\n }\n\n constructor() {\n this.dismissableLayer.focusOutside.subscribe((e) => e.preventDefault());\n\n this.dismissableLayer.dismiss.subscribe(() => this.rootContext.onOpenChange(false));\n\n const focusScope = inject(RdxFocusScope);\n\n afterNextRender(() => {\n focusScope.unmountAutoFocus.subscribe((event) => {\n if (event.defaultPrevented) return;\n\n this.rootContext.triggerElement()?.focus({ preventScroll: true });\n\n event.preventDefault();\n });\n\n focusScope.mountAutoFocus.subscribe((event) => {\n event.preventDefault();\n });\n\n this.content.set(this.currentElement.nativeElement.firstElementChild);\n });\n\n effect((onCleanup) => {\n if (!this.content()) return;\n\n let pointerMoveDelta = { x: 0, y: 0 };\n\n const handlePointerMove = (event: PointerEvent) => {\n pointerMoveDelta = {\n x: Math.abs(Math.round(event.pageX) - (this.rootContext.triggerPointerDownPosRef()?.x ?? 0)),\n y: Math.abs(Math.round(event.pageY) - (this.rootContext.triggerPointerDownPosRef()?.y ?? 0))\n };\n };\n\n const handlePointerUp = (event: PointerEvent) => {\n // Prevent options from being untappable on touch devices\n if (event.pointerType === 'touch') return;\n\n // If the pointer hasn't moved by a certain threshold then we prevent selecting item on `pointerup`.\n if (pointerMoveDelta.x <= 10 && pointerMoveDelta.y <= 10) {\n event.preventDefault();\n } else {\n // otherwise, if the event was outside the content, close.\n if (!this.content()?.contains(event.target as HTMLElement)) this.rootContext.onOpenChange(false);\n }\n document.removeEventListener('pointermove', handlePointerMove);\n this.rootContext.triggerPointerDownPosRef.set(null);\n };\n\n if (this.rootContext.triggerPointerDownPosRef() !== null) {\n document.addEventListener('pointermove', handlePointerMove);\n document.addEventListener('pointerup', handlePointerUp, {\n capture: true,\n once: true\n });\n }\n\n onCleanup(() => {\n document.removeEventListener('pointermove', handlePointerMove);\n document.removeEventListener('pointerup', handlePointerUp, {\n capture: true\n });\n });\n });\n }\n\n focusSelectedItem() {\n if (this.selectedItem() && this.content()) {\n focusFirst([this.selectedItem()!, this.content()!]);\n }\n }\n\n handleKeyDown(event: Event) {\n const keyEvent = event as KeyboardEvent;\n // select should not be navigated using tab key so we prevent it\n if (keyEvent.key === 'Tab') event.preventDefault();\n\n if (['ArrowUp', 'ArrowDown', 'Home', 'End'].includes(keyEvent.key)) {\n const collectionItems = this.collection.items().map((i) => i.element);\n let candidateNodes = [...collectionItems];\n\n if (['ArrowUp', 'End'].includes(keyEvent.key)) candidateNodes = candidateNodes.slice().reverse();\n\n if (['ArrowUp', 'ArrowDown'].includes(keyEvent.key)) {\n const currentElement = event.target as HTMLElement;\n const currentIndex = candidateNodes.indexOf(currentElement);\n candidateNodes = candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n event.preventDefault();\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectId } from '@radix-ng/primitives/core';\n\n@Directive({\n selector: '[rdxSelectGroup]',\n exportAs: 'rdxSelectGroup',\n host: {\n role: 'group',\n '[attr.aria-labelledby]': 'id'\n }\n})\nexport class RdxSelectGroup {\n readonly id = injectId('rdx-select-group-');\n}\n","import {\n afterNextRender,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n linkedSignal,\n signal\n} from '@angular/core';\nimport { RdxCollectionItem } from '@radix-ng/primitives/collection';\nimport { createContext, getActiveElement, handleAndDispatchCustomEvent, injectId } from '@radix-ng/primitives/core';\nimport { injectSelectContentContext } from './select-content';\nimport { injectSelectRootContext } from './select-root';\nimport { SELECTION_KEYS, valueComparator } from './utils';\n\nconst context = () => {\n const context = inject(RdxSelectItem);\n return {\n value: context.value,\n disabled: context.disabled,\n isSelected: context.isSelected,\n textId: context.textId,\n\n onItemTextChange: (node: any) => {\n context.textValue$.set(((context.textValue$() || node.textContent) ?? '').trim());\n }\n };\n};\n\nexport type RdxSelectItemContext = ReturnType<typeof context>;\n\nexport const [injectSelectItemContext, provideSelectItemContext] =\n createContext<RdxSelectItemContext>('RdxSelectItemContext');\n\nexport type SelectEvent = CustomEvent<{ originalEvent: PointerEvent | KeyboardEvent; value?: any }>;\n\n@Directive({\n selector: '[rdxSelectItem]',\n providers: [provideSelectItemContext(context)],\n hostDirectives: [\n {\n directive: RdxCollectionItem,\n inputs: ['value']\n }\n ],\n host: {\n role: 'option',\n '[attr.tabindex]': 'disabled() ? undefined : -1',\n '[attr.aria-selected]': 'isSelected() ? \"checked\" : \"unchecked\"',\n '[attr.data-state]': 'isSelected() ? \"checked\" : \"unchecked\"',\n '[attr.data-highlighted]': 'isFocused() ? \"\" : undefined',\n '(focus)': 'isFocused.set(true)',\n '(blur)': 'isFocused.set(false)',\n '(pointerdown)': 'onPointerDown($event)',\n '(pointerup)': 'onPointerUp($event)',\n '(pointerleave)': 'onPointerLeave($event)',\n '(pointermove)': 'onPointerMove($event)',\n '(keydown)': 'handleKeyDown($event)'\n }\n})\nexport class RdxSelectItem {\n private readonly rootContext = injectSelectRootContext();\n private readonly contentContext = injectSelectContentContext();\n\n private readonly currentElement = inject(ElementRef);\n\n readonly value = input<any>();\n\n readonly textValue = input<string>('');\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly textValue$ = linkedSignal(this.textValue);\n\n readonly isSelected = computed(() =>\n valueComparator(this.rootContext.value(), this.value(), this.rootContext.by())\n );\n\n readonly isFocused = signal(false);\n\n readonly textId = injectId('rdx-select-item-text-');\n\n private readonly afterNextRender = afterNextRender(() => {\n this.contentContext.itemRefCallback(this.currentElement.nativeElement, this.value(), this.disabled());\n });\n\n private SELECT_SELECT = 'select.select';\n\n onPointerDown(event: Event) {\n (event.currentTarget as HTMLElement).focus({ preventScroll: true });\n }\n\n onPointerUp(event: PointerEvent | KeyboardEvent) {\n if (event.defaultPrevented) return;\n\n const eventDetail = { originalEvent: event, value: this.value() };\n\n handleAndDispatchCustomEvent(\n this.SELECT_SELECT,\n async (event: SelectEvent) => {\n if (event.defaultPrevented) return;\n\n this.rootContext.onValueChange(this.value());\n if (!this.rootContext.multiple()) {\n this.rootContext.onOpenChange(false);\n }\n },\n eventDetail\n );\n }\n\n onPointerLeave(event: Event) {\n if (event.defaultPrevented) return;\n\n if (event.currentTarget === getActiveElement()) this.contentContext.onItemLeave?.();\n }\n\n onPointerMove(event: Event) {\n if (event.defaultPrevented) return;\n if (this.disabled()) {\n this.contentContext.onItemLeave?.();\n } else {\n // even though safari doesn't support this option, it's acceptable\n // as it only means it might scroll a few pixels when using the pointer.\n (event.currentTarget as HTMLElement | null)?.focus({ preventScroll: true });\n }\n }\n\n handleKeyDown(event: Event) {\n const keyEvent = event as KeyboardEvent;\n if (event.defaultPrevented) return;\n\n if (SELECTION_KEYS.includes(keyEvent.key)) this.handleSelectCustomEvent(keyEvent);\n\n // prevent page scroll if using the space key to select an item\n if (keyEvent.key === ' ') event.preventDefault();\n }\n\n async handleSelectCustomEvent(event: PointerEvent | KeyboardEvent) {\n if (event.defaultPrevented) return;\n\n const eventDetail = { originalEvent: event, value: this.value() };\n handleAndDispatchCustomEvent(\n this.SELECT_SELECT,\n async (event: SelectEvent) => {\n if (event.defaultPrevented) return;\n\n if (!this.disabled()) {\n this.rootContext.onValueChange(this.value());\n if (!this.rootContext.multiple()) this.rootContext.onOpenChange(false);\n }\n },\n eventDetail\n );\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectSelectItemContext } from './select-item';\n\n@Directive({\n selector: '[rdxSelectItemIndicator]',\n host: {\n '[attr.aria-hidden]': 'true',\n '[hidden]': '!itemContext.isSelected()'\n }\n})\nexport class RdxSelectItemIndicator {\n readonly itemContext = injectSelectItemContext();\n}\n","import { afterNextRender, computed, DestroyRef, Directive, ElementRef, inject } from '@angular/core';\nimport { injectSelectContentContext } from './select-content';\nimport { injectSelectItemContext } from './select-item';\nimport { injectSelectRootContext } from './select-root';\n\n@Directive({\n selector: '[rdxSelectItemText]',\n host: {\n '[id]': 'itemContext.textId'\n }\n})\nexport class RdxSelectItemText {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly rootContext = injectSelectRootContext();\n readonly contentContext = injectSelectContentContext();\n readonly itemContext = injectSelectItemContext();\n\n readonly optionProps = computed(() => {\n return {\n value: this.itemContext.value(),\n disabled: this.itemContext.disabled(),\n textContent: this.elementRef.nativeElement.textContent ?? this.itemContext.value()?.toString() ?? ''\n };\n });\n\n constructor() {\n afterNextRender(() => {\n this.itemContext.onItemTextChange(this.elementRef.nativeElement);\n this.contentContext.itemTextRefCallback(\n this.elementRef.nativeElement,\n this.itemContext.value(),\n this.itemContext.disabled()\n );\n\n this.rootContext.onOptionAdd(this.optionProps);\n });\n\n const destroyRef = inject(DestroyRef);\n\n destroyRef.onDestroy(() => {\n this.rootContext.onOptionRemove(this.optionProps);\n });\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[rdxSelectLabel]',\n host: {}\n})\nexport class RdxSelectLabel {}\n","import { Directive } from '@angular/core';\nimport { RdxPopperContent } from '@radix-ng/primitives/popper';\nimport { injectSelectRootContext } from './select-root';\n\n@Directive({\n selector: '[rdxSelectPopperPositionContent]',\n hostDirectives: [RdxPopperContent],\n host: {\n role: 'listbox',\n '[id]': 'rootContext.contentId'\n }\n})\nexport class RdxSelectPopperPositionContent {\n protected rootContext = injectSelectRootContext();\n}\n","import { booleanAttribute, Directive, ElementRef, forwardRef, inject, input, numberAttribute } from '@angular/core';\nimport { outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';\nimport { Align, RdxPopperContentWrapper, Side } from '@radix-ng/primitives/popper';\nimport { RDX_SELECT_POSITIONER_TOKEN, RdxPositionerImpl } from './select-content';\n\n@Directive({\n selector: '[rdxSelectPopperPositionWrapper]',\n providers: [\n {\n provide: RDX_SELECT_POSITIONER_TOKEN,\n useExisting: forwardRef(() => RdxSelectPopperPositionWrapper)\n }\n ],\n hostDirectives: [\n {\n directive: RdxPopperContentWrapper,\n inputs: [\n 'side',\n 'sideOffset',\n 'align',\n 'alignOffset',\n 'arrowPadding',\n 'avoidCollisions',\n 'collisionBoundary',\n 'collisionPadding',\n 'sticky',\n 'hideWhenDetached',\n 'updatePositionStrategy'\n ]\n }\n ],\n host: {\n // re-namespace exposed content custom properties\n '[style]': `{\n 'boxSizing': 'border-box',\n '--radix-tooltip-content-transform-origin': 'var(--radix-popper-transform-origin)',\n '--radix-tooltip-content-available-width': 'var(--radix-popper-available-width)',\n '--radix-tooltip-content-available-height': 'var(--radix-popper-available-height)',\n '--radix-tooltip-trigger-width': 'var(--radix-popper-anchor-width)',\n '--radix-tooltip-trigger-height': 'var(--radix-popper-anchor-height)',\n }`\n }\n})\nexport class RdxSelectPopperPositionWrapper implements RdxPositionerImpl {\n /**\n * The preferred side of the anchor to render against when open.\n * Will be reversed when collisions occur and avoidCollisions is enabled.\n */\n readonly side = input<Side>('bottom');\n\n /**\n * The distance in pixels from the anchor.\n */\n readonly sideOffset = input(0, { transform: numberAttribute });\n\n /**\n * The preferred alignment against the anchor. May change when collisions occur.\n */\n readonly align = input<Align>('start');\n\n /**\n * An offset in pixels from the `start` or `end` alignment options.\n */\n readonly alignOffset = input(0, { transform: numberAttribute });\n\n /**\n * The padding between the arrow and the edges of the content.\n * If your content has border-radius, this will prevent it from overflowing the corners.\n */\n readonly arrowPadding = input(0, { transform: numberAttribute });\n\n /**\n * When `true`, overrides the `side` and `align` preferences to prevent collisions with boundary edges.\n */\n readonly avoidCollisions = input(true, { transform: booleanAttribute });\n\n /**\n * The element used as the collision boundary.\n * By default this is the viewport, though you can provide additional element(s) to be included in this check.\n */\n readonly collisionBoundary = input<ElementRef<HTMLElement> | ElementRef<HTMLElement>[]>();\n\n /**\n * The distance in pixels from the boundary edges where collision detection should occur.\n * Accepts a number (same for all sides), or a partial padding object, for example: `{ top: 20, left: 20 }`.\n */\n readonly collisionPadding = input<number | Partial<Record<Side, number>>>(0);\n\n /**\n * The sticky behavior on the `align` axis.\n * - `partial` will keep the content in the boundary as long as the trigger is at least partially in the boundary\n * - `always` will keep the content in the boundary regardless.\n */\n readonly sticky = input<'partial' | 'always'>('partial');\n\n /**\n * Whether to hide the content when the trigger becomes fully occluded.\n */\n readonly hideWhenDetached = input(false, { transform: booleanAttribute });\n\n /**\n * Whether to update the position of the floating element on every animation frame if required.\n */\n readonly updatePositionStrategy = input<'optimized' | 'always'>('always');\n\n /**\n * Emits when the element is placed.\n */\n readonly placed = outputFromObservable(outputToObservable(inject(RdxPopperContentWrapper).placed));\n}\n","import { Directive, input } from '@angular/core';\nimport { RdxPortal, RdxPortalContainer } from '@radix-ng/primitives/portal';\n\n@Directive({\n selector: '[rdxSelectPortal]',\n hostDirectives: [\n {\n directive: RdxPortal,\n inputs: ['container']\n }\n ]\n})\nexport class RdxSelectPortal {\n /**\n * Optional container to portal the content into. Defaults to `document.body` when not set.\n */\n readonly container = input<RdxPortalContainer>();\n}\n","import { Directive } from '@angular/core';\nimport { provideRdxPresenceContext, RdxPresenceDirective } from '@radix-ng/primitives/presence';\nimport { injectSelectRootContext } from './select-root';\n\n@Directive({\n selector: 'ng-template[rdxSelectPortalPresence]',\n hostDirectives: [RdxPresenceDirective],\n providers: [\n provideRdxPresenceContext(() => {\n const context = injectSelectRootContext();\n\n return { present: context.open };\n })\n ]\n})\nexport class RdxSelectPortalPresence {}\n","import { afterNextRender, booleanAttribute, computed, Directive, ElementRef, inject, input } from '@angular/core';\nimport { RdxPopperAnchor } from '@radix-ng/primitives/popper';\nimport { injectSelectRootContext } from './select-root';\nimport { OPEN_KEYS } from './utils';\n\n@Directive({\n selector: 'button[rdxSelectTrigger]',\n hostDirectives: [RdxPopperAnchor],\n host: {\n role: 'combobox',\n type: 'button',\n '[attr.disabled]': 'isDisabled() ? \"\" : undefined',\n '[dir]': 'rootContext.dir()',\n '[attr.data-state]': 'rootContext.open() ? \"open\" : \"closed\"',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '(click)': 'onClickHandler($event)',\n '(pointerdown)': 'onPointerDown($event)',\n '(pointerup)': 'onPointerUp($event)',\n '(keydown)': 'onKeydown($event)'\n }\n})\nexport class RdxSelectTrigger {\n readonly rootContext = injectSelectRootContext();\n\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly isDisabled = computed(() => this.rootContext.disabled() || this.disabled());\n\n constructor() {\n afterNextRender(() => {\n this.rootContext.onTriggerChange(this.elementRef);\n });\n }\n\n handleOpen() {\n if (!this.isDisabled()) {\n this.rootContext.onOpenChange(true);\n }\n }\n\n handlePointerOpen(event: Event) {\n const pointerEvent = event as PointerEvent;\n this.handleOpen();\n this.rootContext.triggerPointerDownPosRef.set({\n x: Math.round(pointerEvent.pageX),\n y: Math.round(pointerEvent.pageY)\n });\n }\n\n onClickHandler(event: Event) {\n // Whilst browsers generally have no issue focusing the trigger when clicking\n // on a label, Safari seems to struggle with the fact that there's no `onClick`.\n // We force `focus` in this case. Note: this doesn't create any other side-effect\n // because we are preventing default in `onPointerDown` so effectively\n // this only runs for a label 'click'\n (event?.currentTarget as HTMLElement)?.focus();\n }\n\n onPointerDown(event: Event) {\n const pointerEvent = event as PointerEvent;\n if (pointerEvent.pointerType === 'touch') return event.preventDefault();\n\n // prevent implicit pointer capture\n // https://www.w3.org/TR/pointerevents3/#implicit-pointer-capture\n const target = event.target as HTMLElement;\n if (target.hasPointerCapture(pointerEvent.pointerId)) {\n target.releasePointerCapture(pointerEvent.pointerId);\n }\n\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click)\n if (pointerEvent.button === 0 && pointerEvent.ctrlKey === false) {\n this.handlePointerOpen(event);\n // prevent trigger from stealing focus from the active item after opening.\n event.preventDefault();\n }\n }\n\n onPointerUp(event: Event) {\n const pointerEvent = event as PointerEvent;\n event.preventDefault();\n // Only open on pointer up when using touch devices\n if (pointerEvent.pointerType === 'touch') this.handlePointerOpen(event);\n }\n\n onKeydown(event: Event) {\n const keyEvent = event as KeyboardEvent;\n if (OPEN_KEYS.includes(keyEvent.key)) {\n this.handleOpen();\n event.preventDefault();\n }\n }\n}\n","import { afterNextRender, computed, Directive, ElementRef, inject, input } from '@angular/core';\nimport { AcceptableValue } from '@radix-ng/primitives/core';\nimport { injectSelectRootContext } from './select-root';\nimport { valueComparator } from './utils';\n\n@Directive({\n selector: 'span[rdxSelectValue]',\n exportAs: 'rdxSelectedValue',\n host: {\n '[style.pointer-events]': '\"none\"'\n }\n})\nexport class RdxSelectValue {\n readonly rootContext = injectSelectRootContext();\n\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly placeholder = input<string>();\n\n readonly slotText = computed(() => {\n return this.selectedLabel().length ? this.selectedLabel().join(', ') : this.placeholder();\n });\n\n readonly selectedLabel = computed(() => {\n // eslint-disable-next-line no-useless-assignment\n let list: string[] = [];\n const options = Array.from(this.rootContext.optionsSet());\n\n const getOption = (value?: AcceptableValue) =>\n options.find((option) => valueComparator(value, option.value, this.rootContext.by()));\n if (Array.isArray(this.rootContext.value())) {\n list = Array(this.rootContext.value()).map((value) => getOption(value)?.textContent ?? '');\n } else {\n list = [getOption(this.rootContext.value())?.textContent ?? ''];\n }\n return list.filter(Boolean);\n });\n\n constructor() {\n afterNextRender(() => {\n this.rootContext.valueElement.set(this.elementRef.nativeElement);\n });\n }\n}\n","import { afterNextRender, Directive, ElementRef, inject, signal } from '@angular/core';\nimport { injectSelectContentContext } from './select-content';\n\n@Directive({\n selector: '[rdxSelectViewport]',\n host: {\n role: 'presentation',\n '[attr.data-rdx-select-viewport]': '\"\"',\n '[style]': `{\n position: 'relative',\n flex: 1,\n overflow: 'hidden auto',\n scrollbarWidth: 'none'\n }`,\n '(scroll)': 'handleScroll($event)'\n }\n})\nexport class RdxSelectViewport {\n private readonly contentContext = injectSelectContentContext();\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n private readonly prevScrollTopRef = signal(0);\n\n constructor() {\n afterNextRender(() => {\n this.contentContext?.onViewportChange(this.elementRef.nativeElement);\n });\n }\n\n handleScroll(event: Event) {\n const viewport = event.currentTarget as HTMLElement;\n\n this.prevScrollTopRef.set(viewport.scrollTop);\n }\n}\n","import { RdxSelectContent } from './src/select-content';\nimport { RdxSelectGroup } from './src/select-group';\nimport { RdxSelectItem } from './src/select-item';\nimport { RdxSelectItemIndicator } from './src/select-item-indicator';\nimport { RdxSelectItemText } from './src/select-item-text';\nimport { RdxSelectLabel } from './src/select-label';\nimport { RdxSelectPopperPositionContent } from './src/select-popper-position-content';\nimport { RdxSelectPopperPositionWrapper } from './src/select-popper-position-wrapper';\nimport { RdxSelectPortal } from './src/select-portal';\nimport { RdxSelectPortalPresence } from './src/select-portal-presence';\nimport { RdxSelectRoot } from './src/select-root';\nimport { RdxSelectTrigger } from './src/select-trigger';\nimport { RdxSelectValue } from './src/select-value';\nimport { RdxSelectViewport } from './src/select-viewport';\n\nexport * from './src/select-content';\nexport * from './src/select-group';\nexport * from './src/select-item';\nexport * from './src/select-item-indicator';\nexport * from './src/select-item-text';\nexport * from './src/select-label';\nexport * from './src/select-popper-position-content';\nexport * from './src/select-popper-position-wrapper';\nexport * from './src/select-portal';\nexport * from './src/select-portal-presence';\nexport * from './src/select-root';\nexport * from './src/select-trigger';\nexport * from './src/select-value';\nexport * from './src/select-viewport';\nexport * from './src/utils';\n\nexport const _importsSelect = [\n RdxSelectRoot,\n RdxSelectPortal,\n RdxSelectTrigger,\n RdxSelectValue,\n RdxSelectContent,\n RdxSelectViewport,\n RdxSelectItemIndicator,\n RdxSelectItem,\n RdxSelectItemText,\n RdxSelectLabel,\n RdxSelectGroup,\n RdxSelectPopperPositionContent,\n RdxSelectPopperPositionWrapper,\n RdxSelectPortalPresence\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["context","i1"],"mappings":"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"}
|