Skip to content

Commit ad6a52c

Browse files
authored
SelectPanel: Add focus indicator SelectPanel items (#6259)
1 parent 0318b4b commit ad6a52c

File tree

3 files changed

+37
-1
lines changed

3 files changed

+37
-1
lines changed

.changeset/puny-yaks-bake.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@primer/react': patch
3+
---
4+
5+
SelectPanel: Adds focus indicator to disabled items

packages/react/src/ActionList/ActionList.module.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@
114114
}
115115
}
116116

117-
&:not(:has([aria-disabled], [disabled]), [aria-disabled='true'], [data-has-subitem='true']) {
117+
&:not(:has([aria-disabled], [disabled]), [data-has-subitem='true']) {
118118
@media (hover: hover) {
119119
&:hover,
120120
&:active {

packages/react/src/SelectPanel/SelectPanel.features.stories.tsx

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,37 @@ export const MultiSelect = () => {
209209
)
210210
}
211211

212+
export const WithDisabledItem = () => {
213+
const [selected, setSelected] = useState<ItemInput[]>(items.slice(1, 3))
214+
const [filter, setFilter] = useState('')
215+
const filteredItems = items.map((item, index) => (index === 3 ? {...item, disabled: true} : item))
216+
const [open, setOpen] = useState(false)
217+
218+
return (
219+
<FormControl>
220+
<FormControl.Label>Labels</FormControl.Label>
221+
<SelectPanel
222+
title="Select labels"
223+
placeholder="Select labels"
224+
subtitle="Use labels to organize issues and pull requests"
225+
renderAnchor={({children, ...anchorProps}) => (
226+
<Button trailingAction={TriangleDownIcon} {...anchorProps} aria-haspopup="dialog">
227+
{children}
228+
</Button>
229+
)}
230+
open={open}
231+
onOpenChange={setOpen}
232+
items={filteredItems}
233+
selected={selected}
234+
onSelectedChange={setSelected}
235+
onFilterChange={setFilter}
236+
width="medium"
237+
message={filteredItems.length === 0 ? NoResultsMessage(filter) : undefined}
238+
/>
239+
</FormControl>
240+
)
241+
}
242+
212243
export const WithExternalAnchor = () => {
213244
const [selected, setSelected] = useState<ItemInput[]>(items.slice(1, 3))
214245
const [filter, setFilter] = useState('')

0 commit comments

Comments
 (0)