@@ -27,6 +27,7 @@ function DefaultPage({
2727 searchOnChange,
2828 rootChildren,
2929 emptyChildren = < div data-testid = "empty" > No emojis found</ div > ,
30+ sticky = true ,
3031} : {
3132 children ?: ReactNode ;
3233 locale ?: EmojiPickerRootProps [ "locale" ] ;
@@ -40,6 +41,7 @@ function DefaultPage({
4041 searchValue ?: EmojiPickerSearchProps [ "value" ] ;
4142 rootChildren ?: EmojiPickerRootProps [ "children" ] ;
4243 emptyChildren ?: EmojiPickerEmptyProps [ "children" ] ;
44+ sticky ?: EmojiPickerRootProps [ "sticky" ] ;
4345} ) {
4446 const [ selectedEmoji , setSelectedEmoji ] = useState < Emoji | null > ( null ) ;
4547
@@ -57,6 +59,7 @@ function DefaultPage({
5759 locale = { locale }
5860 onEmojiSelect = { setSelectedEmoji }
5961 skinTone = { skinTone }
62+ sticky = { sticky }
6063 >
6164 < EmojiPicker . Search
6265 data-testid = "search"
@@ -431,6 +434,28 @@ describe("EmojiPicker.Root", () => {
431434 . element ( page . getByRole ( "gridcell" ) . nth ( 7 ) )
432435 . toHaveAttribute ( "aria-colindex" , "7" ) ;
433436 } ) ;
437+
438+ it ( "should support disabling sticky category headers" , async ( ) => {
439+ page . render (
440+ < DefaultPage
441+ sticky = { false }
442+ listComponents = { {
443+ CategoryHeader : ( { category, ...props } ) => (
444+ < div
445+ data-testid = "category-header"
446+ { ...props }
447+ >
448+ { category . label }
449+ </ div >
450+ ) ,
451+ } }
452+ /> ,
453+ ) ;
454+
455+ await expect . element ( page . getByTestId ( "category-header" ) . nth ( 1 ) ) . not . toHaveStyle ( {
456+ position : "sticky" ,
457+ } ) ;
458+ } ) ;
434459} ) ;
435460
436461describe ( "EmojiPicker.Search" , ( ) => {
0 commit comments