-
Notifications
You must be signed in to change notification settings - Fork 382
Expand file tree
/
Copy pathSelectGrouped.tsx
More file actions
71 lines (65 loc) · 1.92 KB
/
SelectGrouped.tsx
File metadata and controls
71 lines (65 loc) · 1.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import { useState } from 'react';
import {
Select,
SelectOption,
SelectList,
SelectGroup,
MenuToggle,
MenuToggleElement,
Divider
} from '@patternfly/react-core';
export const SelectGrouped: React.FunctionComponent = () => {
const [isOpen, setIsOpen] = useState(false);
const [selected, setSelected] = useState<string>('Select a value');
const onToggleClick = () => {
setIsOpen(!isOpen);
};
const onSelect = (_event: React.MouseEvent<Element, MouseEvent> | undefined, value: string | number | undefined) => {
// eslint-disable-next-line no-console
console.log('selected', value);
setSelected(value as string);
setIsOpen(false);
};
const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
<MenuToggle
ref={toggleRef}
onClick={onToggleClick}
isExpanded={isOpen}
style={
{
width: '200px'
} as React.CSSProperties
}
>
{selected}
</MenuToggle>
);
return (
<Select
id="single-grouped-select"
isOpen={isOpen}
selected={selected}
onSelect={onSelect}
onOpenChange={(isOpen) => setIsOpen(isOpen)}
toggle={toggle}
shouldFocusToggleOnSelect
useFloatingUI // FloatingUI is recommended for better positioning. Will become the default in future breaking change.
>
<SelectGroup label="Group 1">
<SelectList>
<SelectOption value="Option 1">Option 1</SelectOption>
<SelectOption value="Option 2">Option 2</SelectOption>
<SelectOption value="Option 3">Option 3</SelectOption>
</SelectList>
</SelectGroup>
<Divider />
<SelectGroup label="Group 2">
<SelectList>
<SelectOption value="Option 4">Option 4</SelectOption>
<SelectOption value="Option 5">Option 5</SelectOption>
<SelectOption value="Option 6">Option 6</SelectOption>
</SelectList>
</SelectGroup>
</Select>
);
};