Skip to content

chore: (DNM) Test branch for rework scroll utilities and fix layout bugs- #10556 - #10588

Open
LFDanLu wants to merge 2 commits into
mainfrom
test_10556
Open

chore: (DNM) Test branch for rework scroll utilities and fix layout bugs- #10556#10588
LFDanLu wants to merge 2 commits into
mainfrom
test_10556

Conversation

@LFDanLu

@LFDanLu LFDanLu commented Sep 8, 2026

Copy link
Copy Markdown
Member

Closes

✅ Pull Request Checklist:

  • Included link to corresponding React Spectrum GitHub Issue.
  • Added/updated unit tests and storybook for this change (for new code or code which already has tests).
  • Filled out test instructions.
  • Updated documentation (if it already exists for this component).
  • Looked at the Accessibility Practices for this feature - Aria Practices
  • I understand every change in this PR and can explain why it's there.
  • If AI-assisted, I followed our AI contribution guidance and pointed my assistant at CLAUDE.md.

📝 Test Instructions:

🧢 Your Project:

@rspbot

rspbot commented Sep 8, 2026

Copy link
Copy Markdown

@rspbot

rspbot commented Sep 8, 2026

Copy link
Copy Markdown
## API Changes

@react-aria/utils

/@react-aria/utils:getScrollParent

 getScrollParent {
-  node: Element
+  element: Element
   checkForOverflow?: boolean
   returnVal: undefined
 }

/@react-aria/utils:getScrollParents

 getScrollParents {
-  node: Element
+  element: Element
   checkForOverflow?: boolean
   returnVal: undefined
 }

/@react-aria/utils:isScrollable

 isScrollable {
-  node: Element | null
-  checkForOverflow?: boolean
+  node: BoundingNode
+  options?: ScrollableOptions | boolean
   returnVal: undefined
 }

@react-spectrum/ai

/@react-spectrum/ai:Attachment

 Attachment {
   aria-describedby?: string
   aria-details?: string
   aria-label?: string
   aria-labelledby?: string
-  children: ReactNode
+  children: ReactNode | (AttachmentRenderProps) => ReactNode
   density?: 'compact' | 'regular' | 'spacious' = 'regular'
   download?: boolean | string
   href?: Href
   hrefLang?: string
   isDisabled?: boolean
   isInvalid?: boolean
   onAction?: () => void
   onPress?: (PressEvent) => void
   onPressChange?: (boolean) => void
   onPressEnd?: (PressEvent) => void
   onPressStart?: (PressEvent) => void
   onPressUp?: (PressEvent) => void
   ping?: string
   referrerPolicy?: HTMLAttributeReferrerPolicy
   rel?: string
   render?: DOMRenderFunction<keyof React.JSX.IntrinsicElements, TagRenderProps>
   routerOptions?: RouterOptions
   size?: 'XS' | 'S' | 'M' | 'L' | 'XL' = 'M'
   styles?: StyleString
   target?: HTMLAttributeAnchorTarget
   textValue?: string
   uploadProgress?: number
   value?: T
   variant?: 'primary' | 'secondary' | 'tertiary' | 'quiet' = 'primary'
 }

/@react-spectrum/ai:PromptFieldValue

 PromptFieldValue {
   Direction: any
   SelectedRange: any
   caretPosition: Position
   constructor: (readonly Array<TokenFieldSegment<T>>, TokenFieldValueOptions) => void
   delete: (Position, Intl.Segmenter, any, any) => this
   deleteLine: (Position, any, any) => this
   endCoalescing: () => void
   findBoundaryWithSegmenter: (Position, Intl.Segmenter, any) => Position | null
   findLineBoundary: (Position, any) => Position | null
   findText: (Position, any, string | RegExp) => Position | null
   redo: () => this
   replaceRange: (Position, Position, string, any) => this
   replaceRangeWithSegments: (Position, Position, Array<TokenFieldSegment>, any) => this
   segments: readonly Array<TokenFieldSegment<T>>
   selectedRange: SelectedRange
   slice: (Position, Position) => this
-  toString: () => void
+  toString: () => string
   tokenize: (string) => Array<TokenFieldSegment>
   undo: () => this
   withCaretPosition: (Position) => this
   withSelectedRange: (SelectedRange) => this

/@react-spectrum/ai:PromptField

 PromptField {
   acceptedAttachmentTypes?: Array<string>
-  aiDisclaimer?: React.ReactNode
   attachments?: Array<PromptFieldAttachment>
   brandColor?: string
   children: React.ReactNode
   defaultAttachments?: Array<PromptFieldAttachment>
   isGenerating?: boolean
   onAITermsPress?: () => void
   onAddAttachments?: (Array<PromptFieldAttachment>) => void
   onAttachmentsChange?: (Array<PromptFieldAttachment>) => void
   onChange?: (PromptFieldValue) => void
   onRemoveAttachments?: (Array<PromptFieldAttachment>) => void
   onStop?: () => void
   onSubmit?: (PromptFieldValue, Array<PromptFieldAttachment>) => void
   size?: 'S' | 'M' = 'M'
   styles?: StyleString
   value?: PromptFieldValue
   variant?: 'balanced' | 'prominent' | 'subtle' = 'balanced'
 }

/@react-spectrum/ai:PromptToken

 PromptToken {
   children: React.ReactNode
+  className?: ClassNameOrFunction<TokenRenderProps> = 'react-aria-Token'
+  style?: StyleOrFunction<TokenRenderProps>
   token: TokenSegment<PromptFieldTokenValue>
 }

/@react-spectrum/ai:ExecutionTraceItem

 ExecutionTraceItem {
   aria-describedby?: string
   aria-details?: string
   aria-label?: string
   aria-labelledby?: string
-  children: string
+  children: ReactNode
   detail?: ReactNode
   detailMaxHeight?: number = 120
   icon?: ReactNode
   id?: string
   styles?: StyleString
 }

/@react-spectrum/ai:ResponseStatusTitle

 ResponseStatusTitle {
-  children: string
+  children: React.ReactNode
   id?: string
   level?: number = 3
   pixelLoader?: Array<Cell> | Array<Array<Cell>>
   styles?: StyleString

/@react-spectrum/ai:ThreadItem

 ThreadItem {
   allowsArrowNavigation?: boolean
-  children: ReactNode
+  children?: ChildrenOrFunction<GridListItemRenderProps>
   focusMode?: 'child' | 'row'
   id?: Key
   isStreaming?: boolean
   shouldAnnounceOnMount?: boolean
   textValue?: string
 }

/@react-spectrum/ai:AttachmentProps

 AttachmentProps {
   aria-describedby?: string
   aria-details?: string
   aria-label?: string
   aria-labelledby?: string
-  children: ReactNode
+  children: ReactNode | (AttachmentRenderProps) => ReactNode
   density?: 'compact' | 'regular' | 'spacious' = 'regular'
   download?: boolean | string
   href?: Href
   hrefLang?: string
   isDisabled?: boolean
   isInvalid?: boolean
   onAction?: () => void
   onPress?: (PressEvent) => void
   onPressChange?: (boolean) => void
   onPressEnd?: (PressEvent) => void
   onPressStart?: (PressEvent) => void
   onPressUp?: (PressEvent) => void
   ping?: string
   referrerPolicy?: HTMLAttributeReferrerPolicy
   rel?: string
   render?: DOMRenderFunction<keyof React.JSX.IntrinsicElements, TagRenderProps>
   routerOptions?: RouterOptions
   size?: 'XS' | 'S' | 'M' | 'L' | 'XL' = 'M'
   styles?: StyleString
   target?: HTMLAttributeAnchorTarget
   textValue?: string
   uploadProgress?: number
   value?: T
   variant?: 'primary' | 'secondary' | 'tertiary' | 'quiet' = 'primary'
 }

/@react-spectrum/ai:PromptFieldProps

 PromptFieldProps {
   acceptedAttachmentTypes?: Array<string>
-  aiDisclaimer?: React.ReactNode
   attachments?: Array<PromptFieldAttachment>
   brandColor?: string
   children: React.ReactNode
   defaultAttachments?: Array<PromptFieldAttachment>
   isGenerating?: boolean
   onAITermsPress?: () => void
   onAddAttachments?: (Array<PromptFieldAttachment>) => void
   onAttachmentsChange?: (Array<PromptFieldAttachment>) => void
   onChange?: (PromptFieldValue) => void
   onRemoveAttachments?: (Array<PromptFieldAttachment>) => void
   onStop?: () => void
   onSubmit?: (PromptFieldValue, Array<PromptFieldAttachment>) => void
   size?: 'S' | 'M' = 'M'
   styles?: StyleString
   value?: PromptFieldValue
   variant?: 'balanced' | 'prominent' | 'subtle' = 'balanced'
 }

/@react-spectrum/ai:PromptTokenProps

 PromptTokenProps {
   children: React.ReactNode
+  className?: ClassNameOrFunction<TokenRenderProps> = 'react-aria-Token'
+  style?: StyleOrFunction<TokenRenderProps>
   token: TokenSegment<PromptFieldTokenValue>
 }

/@react-spectrum/ai:ExecutionTraceItemProps

 ExecutionTraceItemProps {
   aria-describedby?: string
   aria-details?: string
   aria-label?: string
   aria-labelledby?: string
-  children: string
+  children: ReactNode
   detail?: ReactNode
   detailMaxHeight?: number = 120
   icon?: ReactNode
   id?: string
   styles?: StyleString
 }

/@react-spectrum/ai:ResponseStatusTitleProps

 ResponseStatusTitleProps {
-  children: string
+  children: React.ReactNode
   id?: string
   level?: number = 3
   pixelLoader?: Array<Cell> | Array<Array<Cell>>
   styles?: StyleString

/@react-spectrum/ai:ThreadItemProps

 ThreadItemProps {
   allowsArrowNavigation?: boolean
-  children: ReactNode
+  children?: ChildrenOrFunction<GridListItemRenderProps>
   focusMode?: 'child' | 'row'
   id?: Key
   isStreaming?: boolean
   shouldAnnounceOnMount?: boolean
   textValue?: string
 }

@react-spectrum/s2

/@react-spectrum/s2:Menu

 Menu <T> {
   UNSAFE_className?: UnsafeClassName
   UNSAFE_style?: CSSProperties
   aria-describedby?: string
   aria-details?: string
   aria-label?: string
   aria-labelledby?: string
   autoFocus?: boolean | FocusStrategy
   children: ReactNode | (T) => ReactNode
   defaultSelectedKeys?: 'all' | Iterable<Key>
   dependencies?: ReadonlyArray<any>
   disabledKeys?: Iterable<Key>
   disallowEmptySelection?: boolean
   escapeKeyBehavior?: 'clearSelection' | 'none' = 'clearSelection'
   hideLinkOutIcon?: boolean
   id?: string
   items?: Iterable<T>
-  loadingState?: LoadingState
   onAction?: (Key, T) => void
   onClose?: () => void
-  onLoadMore?: () => any
   onSelectionChange?: (Selection) => void
   selectedKeys?: 'all' | Iterable<Key>
   selectionMode?: SelectionMode
   shouldCloseOnSelect?: boolean
   size?: 'S' | 'M' | 'L' | 'XL' = 'M'
   slot?: string | null
   styles?: StylesProp
 }

/@react-spectrum/s2:MenuProps

 MenuProps <T> {
   UNSAFE_className?: UnsafeClassName
   UNSAFE_style?: CSSProperties
   aria-describedby?: string
   aria-details?: string
   aria-label?: string
   aria-labelledby?: string
   autoFocus?: boolean | FocusStrategy
   children: ReactNode | (T) => ReactNode
   defaultSelectedKeys?: 'all' | Iterable<Key>
   dependencies?: ReadonlyArray<any>
   disabledKeys?: Iterable<Key>
   disallowEmptySelection?: boolean
   escapeKeyBehavior?: 'clearSelection' | 'none' = 'clearSelection'
   hideLinkOutIcon?: boolean
   id?: string
   items?: Iterable<T>
-  loadingState?: LoadingState
   onAction?: (Key, T) => void
   onClose?: () => void
-  onLoadMore?: () => any
   onSelectionChange?: (Selection) => void
   selectedKeys?: 'all' | Iterable<Key>
   selectionMode?: SelectionMode
   shouldCloseOnSelect?: boolean
   size?: 'S' | 'M' | 'L' | 'XL' = 'M'
   slot?: string | null
   styles?: StylesProp
 }

@rspbot

rspbot commented Sep 8, 2026

Copy link
Copy Markdown

Agent Skills Changes

Modified (12)
Install

React Spectrum S2:

npx skills add https://d1pzu54gtk2aed.cloudfront.net/pr/6bb0942a7f079d1adfb3dab44104b0d8833f43d5/

React Aria:

npx skills add https://d5iwopk28bdhl.cloudfront.net/pr/6bb0942a7f079d1adfb3dab44104b0d8833f43d5/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants