@@ -53,26 +53,28 @@ export default () => (
5353 < Select .Icon / >
5454 < / Select .Trigger >
5555
56- < Select .Content >
57- < Select .ScrollUpButton / >
58- < Select .Viewport >
59- < Select .Item >
60- < Select .ItemText / >
61- < Select .ItemIndicator / >
62- < / Select .Item >
63-
64- < Select .Group >
65- < Select .Label / >
56+ < Select .Portal >
57+ < Select .Content >
58+ < Select .ScrollUpButton / >
59+ < Select .Viewport >
6660 < Select .Item >
6761 < Select .ItemText / >
6862 < Select .ItemIndicator / >
6963 < / Select .Item >
70- < / Select .Group >
7164
72- < Select .Separator / >
73- < / Select .Viewport >
74- < Select .ScrollDownButton / >
75- < / Select .Content >
65+ < Select .Group >
66+ < Select .Label / >
67+ < Select .Item >
68+ < Select .ItemText / >
69+ < Select .ItemIndicator / >
70+ < / Select .Item >
71+ < / Select .Group >
72+
73+ < Select .Separator / >
74+ < / Select .Viewport >
75+ < Select .ScrollDownButton / >
76+ < / Select .Content >
77+ < / Select .Portal >
7678 < / Select .Root >
7779);
7880```
@@ -220,6 +222,21 @@ A small icon often displayed next to the value as a visual affordance for the fa
220222 ]}
221223/>
222224
225+ ### Portal
226+
227+ When used, portals the content part into the ` body ` .
228+
229+ <PropsTable
230+ data = { [
231+ {
232+ name: ' container' ,
233+ type: ' HTMLElement' ,
234+ default: ' document.body' ,
235+ description: ' Specify a container element to portal the content into.' ,
236+ },
237+ ]}
238+ />
239+
223240### Content
224241
225242The component that pops out when the select is open.
@@ -462,7 +479,7 @@ Used to visually separate items in the select.
462479
463480You can add special styles to disabled items via the ` data-disabled ` attribute.
464481
465- ``` jsx line=4-6,13
482+ ``` jsx line=4-6,14
466483import { styled } from ' @stitches/react' ;
467484import * as Select from ' @radix-ui/react-select' ;
468485
@@ -473,13 +490,15 @@ const StyledItem = styled(Select.Item, {
473490export default () => (
474491 < Select .Root >
475492 < Select .Trigger > …< / Select .Trigger >
476- < Select .Content >
477- < Select .Viewport >
478- < StyledItem __disabled__> …< / StyledItem>
479- < StyledItem> …< / StyledItem>
480- < StyledItem> …< / StyledItem>
481- < / Select .Viewport >
482- < / Select .Content >
493+ < Select .Portal >
494+ < Select .Content >
495+ < Select .Viewport >
496+ < StyledItem __disabled__> …< / StyledItem>
497+ < StyledItem> …< / StyledItem>
498+ < StyledItem> …< / StyledItem>
499+ < / Select .Viewport >
500+ < / Select .Content >
501+ < / Select .Portal >
483502 < / Select .Root >
484503);
485504```
@@ -502,7 +521,9 @@ export default () => (
502521 < Select .Value __placeholder__= " Pick an option" / >
503522 < Select .Icon / >
504523 < / SelectTrigger>
505- < Select .Content > …< / Select .Content >
524+ < Select .Portal >
525+ < Select .Content > …< / Select .Content >
526+ < / Select .Portal >
506527 < / Select .Root >
507528);
508529```
@@ -511,47 +532,51 @@ export default () => (
511532
512533Use the ` Separator ` part to add a separator between items.
513534
514- ``` jsx line=8
535+ ``` jsx line=9
515536< Select .Root >
516537 < Select .Trigger > …< / Select .Trigger >
517- < Select .Content >
518- < Select .Viewport >
519- < Select .Item > …< / Select .Item >
520- < Select .Item > …< / Select .Item >
521- < Select .Item > …< / Select .Item >
522- < Select .Separator / >
523- < Select .Item > …< / Select .Item >
524- < Select .Item > …< / Select .Item >
525- < / Select .Viewport >
526- < / Select .Content >
538+ < Select .Portal >
539+ < Select .Content >
540+ < Select .Viewport >
541+ < Select .Item > …< / Select .Item >
542+ < Select .Item > …< / Select .Item >
543+ < Select .Item > …< / Select .Item >
544+ < Select .Separator / >
545+ < Select .Item > …< / Select .Item >
546+ < Select .Item > …< / Select .Item >
547+ < / Select .Viewport >
548+ < / Select .Content >
549+ < / Select .Portal >
527550< / Select .Root >
528551```
529552
530553### With grouped items
531554
532555Use the ` Group ` and ` Label ` parts to group items in a section.
533556
534- ``` jsx line=5-6,10
557+ ``` jsx line=6-7,11
535558< Select .Root >
536559 < Select .Trigger > …< / Select .Trigger >
537- < Select .Content >
538- < Select .Viewport >
539- < Select .Group >
540- < Select .Label > Label< / Select .Label >
541- < Select .Item > …< / Select .Item >
542- < Select .Item > …< / Select .Item >
543- < Select .Item > …< / Select .Item >
544- < / Select .Group >
545- < / Select .Viewport >
546- < / Select .Content >
560+ < Select .Portal >
561+ < Select .Content >
562+ < Select .Viewport >
563+ < Select .Group >
564+ < Select .Label > Label< / Select .Label >
565+ < Select .Item > …< / Select .Item >
566+ < Select .Item > …< / Select .Item >
567+ < Select .Item > …< / Select .Item >
568+ < / Select .Group >
569+ < / Select .Viewport >
570+ < / Select .Content >
571+ < / Select .Portal >
547572< / Select .Root >
548573```
549574
550575### With complex items
551576
552577You can use custom content in your items.
553578
554- ``` jsx line=4-7,16
579+ ``` jsx line=4-7,17
555580import { styled } from ' @stitches/react' ;
556581import * as Select from ' @radix-ui/react-select' ;
557582
@@ -563,19 +588,21 @@ const Image = styled('img', {
563588export default () => (
564589 < Select .Root >
565590 < Select .Trigger > …< / Select .Trigger >
566- < Select .Content >
567- < Select .Viewport >
568- < Select .Item >
569- < Select .ItemText >
570- < Image src= " …" / >
571- Adolfo Hess
572- < / Select .ItemText >
573- < Select .ItemIndicator > …< / Select .ItemIndicator >
574- < / Select .Item >
575- < Select .Item > …< / Select .Item >
576- < Select .Item > …< / Select .Item >
577- < / Select .Viewport >
578- < / Select .Content >
591+ < Select .Portal >
592+ < Select .Content >
593+ < Select .Viewport >
594+ < Select .Item >
595+ < Select .ItemText >
596+ < Image src= " …" / >
597+ Adolfo Hess
598+ < / Select .ItemText >
599+ < Select .ItemIndicator > …< / Select .ItemIndicator >
600+ < / Select .Item >
601+ < Select .Item > …< / Select .Item >
602+ < Select .Item > …< / Select .Item >
603+ < / Select .Viewport >
604+ < / Select .Content >
605+ < / Select .Portal >
579606 < / Select .Root >
580607);
581608```
@@ -599,6 +626,7 @@ export default () => {
599626 < / Select .Value >
600627 < Select .Icon / >
601628 < / Select .Trigger >
629+ < Select .Portal >
602630 < Select .Content >
603631 < Select .Viewport >
604632 < Select .Item value= " france" >
@@ -615,6 +643,7 @@ export default () => {
615643 < / Select .Item >
616644 < / Select .Viewport >
617645 < / Select .Content >
646+ < / Select .Portal >
618647 < / Select .Root >
619648 );
620649};
@@ -624,7 +653,7 @@ export default () => {
624653
625654The native scrollbar is hidden by default as we recommend using the ` ScrollUpButton ` and ` ScrollDownButton ` parts for the best UX. If you do not want to use these parts, compose your select with our [ Scroll Area] ( scroll-area ) primitive.
626655
627- ``` jsx line=5-8,10-13,15-18,20-23,29,31,35,37-40
656+ ``` jsx line=5-8,10-13,15-18,20-23,30,32,36,38-41
628657import { styled } from ' @stitches/react' ;
629658import * as Select from ' @radix-ui/react-select' ;
630659import * as ScrollAreaPrimitive from ' @radix-ui/react-scroll-area' ;
@@ -652,20 +681,22 @@ const ScrollAreaThumb = styled(ScrollAreaPrimitive.Thumb, {
652681export default () => (
653682 < Select .Root >
654683 < Select .Trigger > …< / Select .Trigger >
655- < Select .Content >
656- < ScrollArea type= " auto" >
657- < Select .Viewport __asChild__>
658- < ScrollAreaViewport>
659- < StyledItem> …< / StyledItem>
660- < StyledItem> …< / StyledItem>
661- < StyledItem> …< / StyledItem>
662- < / ScrollAreaViewport>
663- < / Select .Viewport >
664- < ScrollAreaScrollbar orientation= " vertical" >
665- < ScrollAreaThumb / >
666- < / ScrollAreaScrollbar>
667- < / ScrollArea>
668- < / Select .Content >
684+ < Select .Portal >
685+ < Select .Content >
686+ < ScrollArea type= " auto" >
687+ < Select .Viewport __asChild__>
688+ < ScrollAreaViewport>
689+ < StyledItem> …< / StyledItem>
690+ < StyledItem> …< / StyledItem>
691+ < StyledItem> …< / StyledItem>
692+ < / ScrollAreaViewport>
693+ < / Select .Viewport >
694+ < ScrollAreaScrollbar orientation= " vertical" >
695+ < ScrollAreaThumb / >
696+ < / ScrollAreaScrollbar>
697+ < / ScrollArea>
698+ < / Select .Content >
699+ < / Select .Portal >
669700 < / Select .Root >
670701);
671702```
@@ -752,7 +783,10 @@ export default () => (
752783
753784 < Label htmlFor= " country" > Country< / Label>
754785 < Select .Root >
755- < Select .Trigger __id__= " country" > …< / Select .Trigger > …
786+ < Select .Trigger __id__= " country" > …< / Select .Trigger >
787+ < Select .Portal >
788+ < Select .Content > …< / Select .Content >
789+ < / Select .Portal >
756790 < / Select .Root >
757791 < / >
758792);
@@ -802,15 +836,17 @@ export const Select = React.forwardRef(
802836 < ChevronDownIcon / >
803837 < / SelectPrimitive .Icon >
804838 < / SelectPrimitive .Trigger >
805- < SelectPrimitive .Content >
806- < SelectPrimitive .ScrollUpButton >
807- < ChevronUpIcon / >
808- < / SelectPrimitive .ScrollUpButton >
809- < SelectPrimitive .Viewport > {children}< / SelectPrimitive .Viewport >
810- < SelectPrimitive .ScrollDownButton >
811- < ChevronDownIcon / >
812- < / SelectPrimitive .ScrollDownButton >
813- < / SelectPrimitive .Content >
839+ < SelectPrimitive .Portal >
840+ < SelectPrimitive .Content >
841+ < SelectPrimitive .ScrollUpButton >
842+ < ChevronUpIcon / >
843+ < / SelectPrimitive .ScrollUpButton >
844+ < SelectPrimitive .Viewport > {children}< / SelectPrimitive .Viewport >
845+ < SelectPrimitive .ScrollDownButton >
846+ < ChevronDownIcon / >
847+ < / SelectPrimitive .ScrollDownButton >
848+ < / SelectPrimitive .Content >
849+ < / SelectPrimitive .Portal >
814850 < / SelectPrimitive .Root >
815851 );
816852 }
0 commit comments