Skip to content

Commit bd5f0d4

Browse files
authored
feat(SelectPanel): Convert SelectPanel to CSS modules behind feature flag (#5324)
* feat(SelectPanel): Convert SelectPanel to CSS modules behind feature flag * format css
1 parent 7114ad8 commit bd5f0d4

File tree

3 files changed

+73
-12
lines changed

3 files changed

+73
-12
lines changed

.changeset/cyan-buses-visit.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@primer/react": minor
3+
---
4+
5+
Convert SelectPanel to CSS modules behind feature flag
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
.Wrapper {
2+
display: flex;
3+
height: inherit;
4+
max-height: inherit;
5+
flex-direction: column;
6+
}
7+
8+
.Content {
9+
padding-top: var(--base-size-8);
10+
padding-right: var(--base-size-16);
11+
padding-left: var(--base-size-16);
12+
}
13+
14+
.Title {
15+
font-size: var(--text-body-size-medium);
16+
}
17+
18+
.Subtitle {
19+
font-size: var(--text-body-size-small);
20+
color: var(--fgColor-muted);
21+
}
22+
23+
.Footer {
24+
display: flex;
25+
padding: var(--base-size-8);
26+
border-color: var(--borderColor-default);
27+
border-top: var(--borderWidth-thin) solid;
28+
}
29+
30+
.FilteredActionList {
31+
height: inherit;
32+
max-height: inherit;
33+
}

packages/react/src/SelectPanel/SelectPanel.tsx

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ import {useProvidedStateOrCreate} from '../hooks/useProvidedStateOrCreate'
1919
import {LiveRegion, LiveRegionOutlet, Message} from '../internal/components/LiveRegion'
2020
import {useFeatureFlag} from '../FeatureFlags'
2121

22+
import classes from './SelectPanel.module.css'
23+
import {clsx} from 'clsx'
24+
2225
interface SelectPanelSingleSelection {
2326
selected: ItemInput | undefined
2427
onSelectedChange: (selected: ItemInput | undefined) => void
@@ -112,6 +115,9 @@ export function SelectPanel({
112115
[externalOnFilterChange, setInternalFilterValue],
113116
)
114117

118+
const CSS_MODULES_FEATURE_FLAG = 'primer_react_css_modules_team'
119+
const enabled = useFeatureFlag(CSS_MODULES_FEATURE_FLAG)
120+
115121
const anchorRef = useProvidedRefOrCreate(externalAnchorRef)
116122
const onOpen: AnchoredOverlayProps['onOpen'] = useCallback(
117123
(gesture: Parameters<Exclude<AnchoredOverlayProps['onOpen'], undefined>>[0]) => onOpenChange(true, gesture),
@@ -220,13 +226,25 @@ export function SelectPanel({
220226
}
221227
/>
222228
)}
223-
<Box sx={{display: 'flex', flexDirection: 'column', height: 'inherit', maxHeight: 'inherit'}}>
224-
<Box sx={{pt: 2, px: 3}}>
225-
<Heading as="h1" id={titleId} sx={{fontSize: 1}}>
229+
<Box
230+
sx={enabled ? undefined : {display: 'flex', flexDirection: 'column', height: 'inherit', maxHeight: 'inherit'}}
231+
className={enabled ? classes.Wrapper : undefined}
232+
>
233+
<Box sx={enabled ? undefined : {pt: 2, px: 3}} className={enabled ? classes.Content : undefined}>
234+
<Heading
235+
as="h1"
236+
id={titleId}
237+
sx={enabled ? undefined : {fontSize: 1}}
238+
className={enabled ? classes.Title : undefined}
239+
>
226240
{title}
227241
</Heading>
228242
{subtitle ? (
229-
<Box id={subtitleId} sx={{fontSize: 0, color: 'fg.muted'}}>
243+
<Box
244+
id={subtitleId}
245+
sx={enabled ? undefined : {fontSize: 0, color: 'fg.muted'}}
246+
className={enabled ? classes.Subtitle : undefined}
247+
>
230248
{subtitle}
231249
</Box>
232250
) : null}
@@ -247,17 +265,22 @@ export function SelectPanel({
247265
inputRef={inputRef}
248266
// inheriting height and maxHeight ensures that the FilteredActionList is never taller
249267
// than the Overlay (which would break scrolling the items)
250-
sx={{...sx, height: 'inherit', maxHeight: 'inherit'}}
251-
className={className}
268+
sx={enabled ? sx : {...sx, height: 'inherit', maxHeight: 'inherit'}}
269+
className={enabled ? clsx(className, classes.FilteredActionList) : className}
252270
/>
253271
{footer && (
254272
<Box
255-
sx={{
256-
display: 'flex',
257-
borderTop: '1px solid',
258-
borderColor: 'border.default',
259-
padding: 2,
260-
}}
273+
sx={
274+
enabled
275+
? undefined
276+
: {
277+
display: 'flex',
278+
borderTop: '1px solid',
279+
borderColor: 'border.default',
280+
padding: 2,
281+
}
282+
}
283+
className={enabled ? classes.Footer : undefined}
261284
>
262285
{footer}
263286
</Box>

0 commit comments

Comments
 (0)