@patternfly/react-core 4.214.5 → 4.216.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -0
- package/dist/esm/components/Checkbox/Checkbox.d.ts +2 -0
- package/dist/esm/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/esm/components/Checkbox/Checkbox.js +4 -3
- package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/esm/components/HelperText/HelperTextItem.d.ts +4 -0
- package/dist/esm/components/HelperText/HelperTextItem.d.ts.map +1 -1
- package/dist/esm/components/HelperText/HelperTextItem.js +7 -2
- package/dist/esm/components/HelperText/HelperTextItem.js.map +1 -1
- package/dist/esm/components/Menu/MenuItem.d.ts +3 -1
- package/dist/esm/components/Menu/MenuItem.d.ts.map +1 -1
- package/dist/esm/components/Menu/MenuItem.js +15 -6
- package/dist/esm/components/Menu/MenuItem.js.map +1 -1
- package/dist/esm/components/Select/Select.js +2 -2
- package/dist/esm/components/Select/Select.js.map +1 -1
- package/dist/js/components/Checkbox/Checkbox.d.ts +2 -0
- package/dist/js/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/js/components/Checkbox/Checkbox.js +4 -3
- package/dist/js/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/js/components/HelperText/HelperTextItem.d.ts +4 -0
- package/dist/js/components/HelperText/HelperTextItem.d.ts.map +1 -1
- package/dist/js/components/HelperText/HelperTextItem.js +7 -2
- package/dist/js/components/HelperText/HelperTextItem.js.map +1 -1
- package/dist/js/components/Menu/MenuItem.d.ts +3 -1
- package/dist/js/components/Menu/MenuItem.d.ts.map +1 -1
- package/dist/js/components/Menu/MenuItem.js +15 -6
- package/dist/js/components/Menu/MenuItem.js.map +1 -1
- package/dist/js/components/Select/Select.js +2 -2
- package/dist/js/components/Select/Select.js.map +1 -1
- package/dist/umd/react-core.js +26 -13
- package/dist/umd/react-core.min.js +2 -2
- package/package.json +5 -5
- package/src/components/Checkbox/Checkbox.tsx +7 -3
- package/src/components/Checkbox/__tests__/Checkbox.test.tsx +9 -0
- package/src/components/Dropdown/examples/Dropdown.md +25 -1530
- package/src/components/Dropdown/examples/DropdownAlignmentOnBreakpoints.tsx +64 -0
- package/src/components/Dropdown/examples/DropdownAppendBodyVsParent.tsx +83 -0
- package/src/components/Dropdown/examples/DropdownBadge.tsx +46 -0
- package/src/components/Dropdown/examples/DropdownBasic.tsx +57 -0
- package/src/components/Dropdown/examples/DropdownBasicPanel.tsx +34 -0
- package/src/components/Dropdown/examples/DropdownDescriptions.tsx +55 -0
- package/src/components/Dropdown/examples/DropdownDirectionUp.tsx +58 -0
- package/src/components/Dropdown/examples/DropdownDisabled.tsx +57 -0
- package/src/components/Dropdown/examples/DropdownGroups.tsx +55 -0
- package/src/components/Dropdown/examples/DropdownIconOnly.tsx +59 -0
- package/src/components/Dropdown/examples/DropdownImageAndText.tsx +64 -0
- package/src/components/Dropdown/examples/DropdownInitialSelection.tsx +57 -0
- package/src/components/Dropdown/examples/DropdownKebab.tsx +54 -0
- package/src/components/Dropdown/examples/DropdownPlainTextToggle.tsx +59 -0
- package/src/components/Dropdown/examples/DropdownPositionRight.tsx +58 -0
- package/src/components/Dropdown/examples/DropdownPrimaryToggle.tsx +57 -0
- package/src/components/Dropdown/examples/DropdownRouterLink.tsx +36 -0
- package/src/components/Dropdown/examples/DropdownSecondaryToggle.tsx +57 -0
- package/src/components/Dropdown/examples/DropdownSplitButton.tsx +67 -0
- package/src/components/Dropdown/examples/DropdownSplitButtonAction.tsx +105 -0
- package/src/components/Dropdown/examples/DropdownSplitButtonActionPrimary.tsx +107 -0
- package/src/components/Dropdown/examples/DropdownSplitButtonDisabled.tsx +73 -0
- package/src/components/Dropdown/examples/DropdownSplitButtonIndeterminate.tsx +78 -0
- package/src/components/Dropdown/examples/DropdownSplitButtonText.tsx +69 -0
- package/src/components/HelperText/HelperTextItem.tsx +10 -1
- package/src/components/HelperText/__tests__/__snapshots__/HelperText.test.tsx.snap +5 -0
- package/src/components/Menu/MenuItem.tsx +69 -43
- package/src/components/Menu/__tests__/Menu.test.tsx +23 -0
- package/src/components/Menu/examples/Menu.md +5 -0
- package/src/components/Menu/examples/MenuWithCheckbox.tsx +34 -0
- package/src/components/Select/Select.tsx +2 -2
- package/src/demos/ComposableMenu/ComposableMenu.md +5 -0
- package/src/demos/ComposableMenu/examples/ComposableSimpleCheckboxSelect.tsx +98 -0
- package/src/demos/examples/DashboardHeader.js +50 -50
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Dropdown, DropdownItem, DropdownSeparator, KebabToggle } from '@patternfly/react-core';
|
|
3
|
+
|
|
4
|
+
export const DropdownKebab: React.FunctionComponent = () => {
|
|
5
|
+
const [isOpen, setIsOpen] = React.useState(false);
|
|
6
|
+
|
|
7
|
+
const onToggle = (isOpen: boolean) => {
|
|
8
|
+
setIsOpen(isOpen);
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const onFocus = () => {
|
|
12
|
+
const element = document.getElementById('toggle-kebab');
|
|
13
|
+
element.focus();
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const onSelect = () => {
|
|
17
|
+
setIsOpen(false);
|
|
18
|
+
onFocus();
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const dropdownItems = [
|
|
22
|
+
<DropdownItem key="link">Link</DropdownItem>,
|
|
23
|
+
<DropdownItem key="action" component="button">
|
|
24
|
+
Action
|
|
25
|
+
</DropdownItem>,
|
|
26
|
+
<DropdownItem key="disabled link" isDisabled href="www.google.com">
|
|
27
|
+
Disabled link
|
|
28
|
+
</DropdownItem>,
|
|
29
|
+
<DropdownItem
|
|
30
|
+
key="disabled action"
|
|
31
|
+
isAriaDisabled
|
|
32
|
+
component="button"
|
|
33
|
+
tooltip="Tooltip for disabled item"
|
|
34
|
+
tooltipProps={{ position: 'top' }}
|
|
35
|
+
>
|
|
36
|
+
Disabled action
|
|
37
|
+
</DropdownItem>,
|
|
38
|
+
<DropdownSeparator key="separator" />,
|
|
39
|
+
<DropdownItem key="separated link">Separated link</DropdownItem>,
|
|
40
|
+
<DropdownItem key="separated action" component="button">
|
|
41
|
+
Separated action
|
|
42
|
+
</DropdownItem>
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
return (
|
|
46
|
+
<Dropdown
|
|
47
|
+
onSelect={onSelect}
|
|
48
|
+
toggle={<KebabToggle id="toggle-kebab" onToggle={onToggle} />}
|
|
49
|
+
isOpen={isOpen}
|
|
50
|
+
isPlain
|
|
51
|
+
dropdownItems={dropdownItems}
|
|
52
|
+
/>
|
|
53
|
+
);
|
|
54
|
+
};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Dropdown, DropdownToggle, DropdownItem, DropdownSeparator } from '@patternfly/react-core';
|
|
3
|
+
|
|
4
|
+
export const DropdownPlainTextToggle: React.FunctionComponent = () => {
|
|
5
|
+
const [isOpen, setIsOpen] = React.useState(false);
|
|
6
|
+
|
|
7
|
+
const onToggle = (isOpen: boolean) => {
|
|
8
|
+
setIsOpen(isOpen);
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const onFocus = () => {
|
|
12
|
+
const element = document.getElementById('toggle-plain-text');
|
|
13
|
+
element.focus();
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const onSelect = () => {
|
|
17
|
+
setIsOpen(false);
|
|
18
|
+
onFocus();
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const dropdownItems = [
|
|
22
|
+
<DropdownItem key="link">Link</DropdownItem>,
|
|
23
|
+
<DropdownItem key="action" component="button">
|
|
24
|
+
Action
|
|
25
|
+
</DropdownItem>,
|
|
26
|
+
<DropdownItem key="disabled link" isDisabled href="www.google.com">
|
|
27
|
+
Disabled link
|
|
28
|
+
</DropdownItem>,
|
|
29
|
+
<DropdownItem
|
|
30
|
+
key="disabled action"
|
|
31
|
+
isAriaDisabled
|
|
32
|
+
component="button"
|
|
33
|
+
tooltip="Tooltip for disabled item"
|
|
34
|
+
tooltipProps={{ position: 'top' }}
|
|
35
|
+
>
|
|
36
|
+
Disabled action
|
|
37
|
+
</DropdownItem>,
|
|
38
|
+
<DropdownSeparator key="separator" />,
|
|
39
|
+
<DropdownItem key="separated link">Separated link</DropdownItem>,
|
|
40
|
+
<DropdownItem key="separated action" component="button">
|
|
41
|
+
Separated action
|
|
42
|
+
</DropdownItem>
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
return (
|
|
46
|
+
<Dropdown
|
|
47
|
+
isText
|
|
48
|
+
isPlain
|
|
49
|
+
onSelect={onSelect}
|
|
50
|
+
toggle={
|
|
51
|
+
<DropdownToggle id="toggle-plain-text" onToggle={onToggle}>
|
|
52
|
+
Dropdown
|
|
53
|
+
</DropdownToggle>
|
|
54
|
+
}
|
|
55
|
+
isOpen={isOpen}
|
|
56
|
+
dropdownItems={dropdownItems}
|
|
57
|
+
/>
|
|
58
|
+
);
|
|
59
|
+
};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Dropdown, DropdownToggle, DropdownItem, DropdownSeparator, DropdownPosition } from '@patternfly/react-core';
|
|
3
|
+
|
|
4
|
+
export const DropdownPositionRight: React.FunctionComponent = () => {
|
|
5
|
+
const [isOpen, setIsOpen] = React.useState(false);
|
|
6
|
+
|
|
7
|
+
const onToggle = (isOpen: boolean) => {
|
|
8
|
+
setIsOpen(isOpen);
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const onFocus = () => {
|
|
12
|
+
const element = document.getElementById('toggle-position-right');
|
|
13
|
+
element.focus();
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const onSelect = () => {
|
|
17
|
+
setIsOpen(false);
|
|
18
|
+
onFocus();
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const dropdownItems = [
|
|
22
|
+
<DropdownItem key="link">Link</DropdownItem>,
|
|
23
|
+
<DropdownItem key="action" component="button">
|
|
24
|
+
Action
|
|
25
|
+
</DropdownItem>,
|
|
26
|
+
<DropdownItem key="disabled link" isDisabled href="www.google.com">
|
|
27
|
+
Disabled link
|
|
28
|
+
</DropdownItem>,
|
|
29
|
+
<DropdownItem
|
|
30
|
+
key="disabled action"
|
|
31
|
+
isAriaDisabled
|
|
32
|
+
component="button"
|
|
33
|
+
tooltip="Tooltip for disabled item"
|
|
34
|
+
tooltipProps={{ position: 'top' }}
|
|
35
|
+
>
|
|
36
|
+
Disabled action
|
|
37
|
+
</DropdownItem>,
|
|
38
|
+
<DropdownSeparator key="separator" />,
|
|
39
|
+
<DropdownItem key="separated link">Separated link</DropdownItem>,
|
|
40
|
+
<DropdownItem key="separated action" component="button">
|
|
41
|
+
Separated action
|
|
42
|
+
</DropdownItem>
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
return (
|
|
46
|
+
<Dropdown
|
|
47
|
+
onSelect={onSelect}
|
|
48
|
+
position={DropdownPosition.right}
|
|
49
|
+
toggle={
|
|
50
|
+
<DropdownToggle id="toggle-position-right" onToggle={onToggle}>
|
|
51
|
+
Dropdown
|
|
52
|
+
</DropdownToggle>
|
|
53
|
+
}
|
|
54
|
+
isOpen={isOpen}
|
|
55
|
+
dropdownItems={dropdownItems}
|
|
56
|
+
/>
|
|
57
|
+
);
|
|
58
|
+
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Dropdown, DropdownToggle, DropdownItem, DropdownSeparator } from '@patternfly/react-core';
|
|
3
|
+
|
|
4
|
+
export const DropdownPrimaryToggle: React.FunctionComponent = () => {
|
|
5
|
+
const [isOpen, setIsOpen] = React.useState(false);
|
|
6
|
+
|
|
7
|
+
const onToggle = (isOpen: boolean) => {
|
|
8
|
+
setIsOpen(isOpen);
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const onFocus = () => {
|
|
12
|
+
const element = document.getElementById('toggle-primary');
|
|
13
|
+
element.focus();
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const onSelect = () => {
|
|
17
|
+
setIsOpen(false);
|
|
18
|
+
onFocus();
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const dropdownItems = [
|
|
22
|
+
<DropdownItem key="link">Link</DropdownItem>,
|
|
23
|
+
<DropdownItem key="action" component="button">
|
|
24
|
+
Action
|
|
25
|
+
</DropdownItem>,
|
|
26
|
+
<DropdownItem key="disabled link" isDisabled href="www.google.com">
|
|
27
|
+
Disabled link
|
|
28
|
+
</DropdownItem>,
|
|
29
|
+
<DropdownItem
|
|
30
|
+
key="disabled action"
|
|
31
|
+
isAriaDisabled
|
|
32
|
+
component="button"
|
|
33
|
+
tooltip="Tooltip for disabled item"
|
|
34
|
+
tooltipProps={{ position: 'top' }}
|
|
35
|
+
>
|
|
36
|
+
Disabled action
|
|
37
|
+
</DropdownItem>,
|
|
38
|
+
<DropdownSeparator key="separator" />,
|
|
39
|
+
<DropdownItem key="separated link">Separated link</DropdownItem>,
|
|
40
|
+
<DropdownItem key="separated action" component="button">
|
|
41
|
+
Separated action
|
|
42
|
+
</DropdownItem>
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
return (
|
|
46
|
+
<Dropdown
|
|
47
|
+
onSelect={onSelect}
|
|
48
|
+
toggle={
|
|
49
|
+
<DropdownToggle id="toggle-primary" isPrimary onToggle={onToggle}>
|
|
50
|
+
Dropdown
|
|
51
|
+
</DropdownToggle>
|
|
52
|
+
}
|
|
53
|
+
isOpen={isOpen}
|
|
54
|
+
dropdownItems={dropdownItems}
|
|
55
|
+
/>
|
|
56
|
+
);
|
|
57
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Dropdown, DropdownToggle, DropdownItem } from '@patternfly/react-core';
|
|
3
|
+
import { Link } from '@reach/router';
|
|
4
|
+
|
|
5
|
+
export const DropdownRouterLink: React.FunctionComponent = () => {
|
|
6
|
+
const [isOpen, setIsOpen] = React.useState(false);
|
|
7
|
+
|
|
8
|
+
const onToggle = (isOpen: boolean) => {
|
|
9
|
+
setIsOpen(isOpen);
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const onFocus = () => {
|
|
13
|
+
const element = document.getElementById('toggle-router-link');
|
|
14
|
+
element.focus();
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const onSelect = () => {
|
|
18
|
+
setIsOpen(false);
|
|
19
|
+
onFocus();
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const dropdownItems = [<DropdownItem key="routerlink" component={<Link to="/">@reach/router Link</Link>} />];
|
|
23
|
+
|
|
24
|
+
return (
|
|
25
|
+
<Dropdown
|
|
26
|
+
onSelect={onSelect}
|
|
27
|
+
toggle={
|
|
28
|
+
<DropdownToggle id="toggle-router-link" onToggle={onToggle}>
|
|
29
|
+
Dropdown
|
|
30
|
+
</DropdownToggle>
|
|
31
|
+
}
|
|
32
|
+
isOpen={isOpen}
|
|
33
|
+
dropdownItems={dropdownItems}
|
|
34
|
+
/>
|
|
35
|
+
);
|
|
36
|
+
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Dropdown, DropdownToggle, DropdownItem, DropdownSeparator } from '@patternfly/react-core';
|
|
3
|
+
|
|
4
|
+
export const DropdownPrimaryToggle: React.FunctionComponent = () => {
|
|
5
|
+
const [isOpen, setIsOpen] = React.useState(false);
|
|
6
|
+
|
|
7
|
+
const onToggle = (isOpen: boolean) => {
|
|
8
|
+
setIsOpen(isOpen);
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const onFocus = () => {
|
|
12
|
+
const element = document.getElementById('toggle-secondary');
|
|
13
|
+
element.focus();
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const onSelect = () => {
|
|
17
|
+
setIsOpen(false);
|
|
18
|
+
onFocus();
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const dropdownItems = [
|
|
22
|
+
<DropdownItem key="link">Link</DropdownItem>,
|
|
23
|
+
<DropdownItem key="action" component="button">
|
|
24
|
+
Action
|
|
25
|
+
</DropdownItem>,
|
|
26
|
+
<DropdownItem key="disabled link" isDisabled href="www.google.com">
|
|
27
|
+
Disabled link
|
|
28
|
+
</DropdownItem>,
|
|
29
|
+
<DropdownItem
|
|
30
|
+
key="disabled action"
|
|
31
|
+
isAriaDisabled
|
|
32
|
+
component="button"
|
|
33
|
+
tooltip="Tooltip for disabled item"
|
|
34
|
+
tooltipProps={{ position: 'top' }}
|
|
35
|
+
>
|
|
36
|
+
Disabled action
|
|
37
|
+
</DropdownItem>,
|
|
38
|
+
<DropdownSeparator key="separator" />,
|
|
39
|
+
<DropdownItem key="separated link">Separated link</DropdownItem>,
|
|
40
|
+
<DropdownItem key="separated action" component="button">
|
|
41
|
+
Separated action
|
|
42
|
+
</DropdownItem>
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
return (
|
|
46
|
+
<Dropdown
|
|
47
|
+
onSelect={onSelect}
|
|
48
|
+
toggle={
|
|
49
|
+
<DropdownToggle id="toggle-secondary" toggleVariant="secondary" onToggle={onToggle}>
|
|
50
|
+
Dropdown
|
|
51
|
+
</DropdownToggle>
|
|
52
|
+
}
|
|
53
|
+
isOpen={isOpen}
|
|
54
|
+
dropdownItems={dropdownItems}
|
|
55
|
+
/>
|
|
56
|
+
);
|
|
57
|
+
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
Dropdown,
|
|
4
|
+
DropdownToggle,
|
|
5
|
+
DropdownToggleCheckbox,
|
|
6
|
+
DropdownItem,
|
|
7
|
+
DropdownSeparator
|
|
8
|
+
} from '@patternfly/react-core';
|
|
9
|
+
|
|
10
|
+
export const DropdownSplitButton: React.FunctionComponent = () => {
|
|
11
|
+
const [isOpen, setIsOpen] = React.useState(false);
|
|
12
|
+
|
|
13
|
+
const onToggle = (isOpen: boolean) => {
|
|
14
|
+
setIsOpen(isOpen);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const onFocus = () => {
|
|
18
|
+
const element = document.getElementById('toggle-split-button');
|
|
19
|
+
element.focus();
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const onSelect = () => {
|
|
23
|
+
setIsOpen(false);
|
|
24
|
+
onFocus();
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const dropdownItems = [
|
|
28
|
+
<DropdownItem key="link">Link</DropdownItem>,
|
|
29
|
+
<DropdownItem key="action" component="button">
|
|
30
|
+
Action
|
|
31
|
+
</DropdownItem>,
|
|
32
|
+
<DropdownItem key="disabled link" isDisabled href="www.google.com">
|
|
33
|
+
Disabled link
|
|
34
|
+
</DropdownItem>,
|
|
35
|
+
<DropdownItem
|
|
36
|
+
key="disabled action"
|
|
37
|
+
isAriaDisabled
|
|
38
|
+
component="button"
|
|
39
|
+
tooltip="Tooltip for disabled item"
|
|
40
|
+
tooltipProps={{ position: 'top' }}
|
|
41
|
+
>
|
|
42
|
+
Disabled action
|
|
43
|
+
</DropdownItem>,
|
|
44
|
+
<DropdownSeparator key="separator" />,
|
|
45
|
+
<DropdownItem key="separated link">Separated link</DropdownItem>,
|
|
46
|
+
<DropdownItem key="separated action" component="button">
|
|
47
|
+
Separated action
|
|
48
|
+
</DropdownItem>
|
|
49
|
+
];
|
|
50
|
+
|
|
51
|
+
return (
|
|
52
|
+
<Dropdown
|
|
53
|
+
onSelect={onSelect}
|
|
54
|
+
toggle={
|
|
55
|
+
<DropdownToggle
|
|
56
|
+
splitButtonItems={[
|
|
57
|
+
<DropdownToggleCheckbox id="split-button-checkbox" key="split-checkbox" aria-label="Select all" />
|
|
58
|
+
]}
|
|
59
|
+
onToggle={onToggle}
|
|
60
|
+
id="toggle-split-button"
|
|
61
|
+
/>
|
|
62
|
+
}
|
|
63
|
+
isOpen={isOpen}
|
|
64
|
+
dropdownItems={dropdownItems}
|
|
65
|
+
/>
|
|
66
|
+
);
|
|
67
|
+
};
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Dropdown, DropdownToggle, DropdownToggleAction, DropdownItem } from '@patternfly/react-core';
|
|
3
|
+
import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';
|
|
4
|
+
import BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon';
|
|
5
|
+
import CubesIcon from '@patternfly/react-icons/dist/esm/icons/cubes-icon';
|
|
6
|
+
|
|
7
|
+
export const DropdownSplitButtonAction: React.FunctionComponent = () => {
|
|
8
|
+
const [isActionOpen, setIsActionOpen] = React.useState(false);
|
|
9
|
+
const [isCogOpen, setIsCogOpen] = React.useState(false);
|
|
10
|
+
|
|
11
|
+
const onActionToggle = (isActionOpen: boolean) => {
|
|
12
|
+
setIsActionOpen(isActionOpen);
|
|
13
|
+
};
|
|
14
|
+
const onCogToggle = (isCogOpen: boolean) => {
|
|
15
|
+
setIsCogOpen(isCogOpen);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const onActionClick = () => {
|
|
19
|
+
window.alert('You selected an action button!');
|
|
20
|
+
};
|
|
21
|
+
const onCogClick = () => {
|
|
22
|
+
window.alert('You selected the Cog!');
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const onActionFocus = () => {
|
|
26
|
+
const element = document.getElementById('toggle-split-button-action');
|
|
27
|
+
element.focus();
|
|
28
|
+
};
|
|
29
|
+
const onCogFocus = () => {
|
|
30
|
+
const element = document.getElementById('toggle-split-button-cog');
|
|
31
|
+
element.focus();
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const onActionSelect = () => {
|
|
35
|
+
setIsActionOpen(false);
|
|
36
|
+
onActionFocus();
|
|
37
|
+
};
|
|
38
|
+
const onCogSelect = () => {
|
|
39
|
+
setIsCogOpen(false);
|
|
40
|
+
onCogFocus();
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const dropdownItems = [
|
|
44
|
+
<DropdownItem key="action" component="button" onClick={onActionClick}>
|
|
45
|
+
Action
|
|
46
|
+
</DropdownItem>,
|
|
47
|
+
<DropdownItem key="disabled link" component="button" isDisabled onClick={onActionClick}>
|
|
48
|
+
Disabled action
|
|
49
|
+
</DropdownItem>,
|
|
50
|
+
<DropdownItem key="other action" component="button" onClick={onActionClick}>
|
|
51
|
+
Other action
|
|
52
|
+
</DropdownItem>
|
|
53
|
+
];
|
|
54
|
+
|
|
55
|
+
const dropdownIconItems = [
|
|
56
|
+
<DropdownItem key="action" component="button" icon={<CogIcon />} onClick={onActionClick}>
|
|
57
|
+
Action
|
|
58
|
+
</DropdownItem>,
|
|
59
|
+
<DropdownItem key="disabled link" component="button" icon={<BellIcon />} isDisabled onClick={onActionClick}>
|
|
60
|
+
Disabled action
|
|
61
|
+
</DropdownItem>,
|
|
62
|
+
<DropdownItem key="other action" component="button" icon={<CubesIcon />} onClick={onActionClick}>
|
|
63
|
+
Other action
|
|
64
|
+
</DropdownItem>
|
|
65
|
+
];
|
|
66
|
+
|
|
67
|
+
return (
|
|
68
|
+
<React.Fragment>
|
|
69
|
+
<Dropdown
|
|
70
|
+
onSelect={onActionSelect}
|
|
71
|
+
toggle={
|
|
72
|
+
<DropdownToggle
|
|
73
|
+
id="toggle-split-button-action"
|
|
74
|
+
splitButtonItems={[
|
|
75
|
+
<DropdownToggleAction key="action" onClick={onActionClick}>
|
|
76
|
+
Action
|
|
77
|
+
</DropdownToggleAction>
|
|
78
|
+
]}
|
|
79
|
+
splitButtonVariant="action"
|
|
80
|
+
onToggle={onActionToggle}
|
|
81
|
+
/>
|
|
82
|
+
}
|
|
83
|
+
isOpen={isActionOpen}
|
|
84
|
+
dropdownItems={dropdownItems}
|
|
85
|
+
/>{' '}
|
|
86
|
+
<Dropdown
|
|
87
|
+
onSelect={onCogSelect}
|
|
88
|
+
toggle={
|
|
89
|
+
<DropdownToggle
|
|
90
|
+
id="toggle-split-button-cog"
|
|
91
|
+
splitButtonItems={[
|
|
92
|
+
<DropdownToggleAction key="cog-action" aria-label="Action" onClick={onCogClick}>
|
|
93
|
+
<CogIcon />
|
|
94
|
+
</DropdownToggleAction>
|
|
95
|
+
]}
|
|
96
|
+
splitButtonVariant="action"
|
|
97
|
+
onToggle={onCogToggle}
|
|
98
|
+
/>
|
|
99
|
+
}
|
|
100
|
+
isOpen={isCogOpen}
|
|
101
|
+
dropdownItems={dropdownIconItems}
|
|
102
|
+
/>
|
|
103
|
+
</React.Fragment>
|
|
104
|
+
);
|
|
105
|
+
};
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Dropdown, DropdownToggle, DropdownToggleAction, DropdownItem } from '@patternfly/react-core';
|
|
3
|
+
import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';
|
|
4
|
+
import BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon';
|
|
5
|
+
import CubesIcon from '@patternfly/react-icons/dist/esm/icons/cubes-icon';
|
|
6
|
+
|
|
7
|
+
export const DropdownSplitButtonActionPrimary: React.FunctionComponent = () => {
|
|
8
|
+
const [isActionOpen, setIsActionOpen] = React.useState(false);
|
|
9
|
+
const [isCogOpen, setIsCogOpen] = React.useState(false);
|
|
10
|
+
|
|
11
|
+
const onActionToggle = (isActionOpen: boolean) => {
|
|
12
|
+
setIsActionOpen(isActionOpen);
|
|
13
|
+
};
|
|
14
|
+
const onCogToggle = (isCogOpen: boolean) => {
|
|
15
|
+
setIsCogOpen(isCogOpen);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const onActionClick = () => {
|
|
19
|
+
window.alert('You selected an action button!');
|
|
20
|
+
};
|
|
21
|
+
const onCogClick = () => {
|
|
22
|
+
window.alert('You selected the Cog!');
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const onActionFocus = () => {
|
|
26
|
+
const element = document.getElementById('toggle-split-button-action-primary');
|
|
27
|
+
element.focus();
|
|
28
|
+
};
|
|
29
|
+
const onCogFocus = () => {
|
|
30
|
+
const element = document.getElementById('toggle-split-button-cog-primary');
|
|
31
|
+
element.focus();
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const onActionSelect = () => {
|
|
35
|
+
setIsActionOpen(false);
|
|
36
|
+
onActionFocus();
|
|
37
|
+
};
|
|
38
|
+
const onCogSelect = () => {
|
|
39
|
+
setIsCogOpen(false);
|
|
40
|
+
onCogFocus();
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const dropdownItems = [
|
|
44
|
+
<DropdownItem key="action" component="button" onClick={onActionClick}>
|
|
45
|
+
Action
|
|
46
|
+
</DropdownItem>,
|
|
47
|
+
<DropdownItem key="disabled link" component="button" isDisabled onClick={onActionClick}>
|
|
48
|
+
Disabled action
|
|
49
|
+
</DropdownItem>,
|
|
50
|
+
<DropdownItem key="other action" component="button" onClick={onActionClick}>
|
|
51
|
+
Other action
|
|
52
|
+
</DropdownItem>
|
|
53
|
+
];
|
|
54
|
+
|
|
55
|
+
const dropdownIconItems = [
|
|
56
|
+
<DropdownItem key="action" component="button" icon={<CogIcon />} onClick={onActionClick}>
|
|
57
|
+
Action
|
|
58
|
+
</DropdownItem>,
|
|
59
|
+
<DropdownItem key="disabled link" component="button" icon={<BellIcon />} isDisabled onClick={onActionClick}>
|
|
60
|
+
Disabled action
|
|
61
|
+
</DropdownItem>,
|
|
62
|
+
<DropdownItem key="other action" component="button" icon={<CubesIcon />} onClick={onActionClick}>
|
|
63
|
+
Other action
|
|
64
|
+
</DropdownItem>
|
|
65
|
+
];
|
|
66
|
+
|
|
67
|
+
return (
|
|
68
|
+
<React.Fragment>
|
|
69
|
+
<Dropdown
|
|
70
|
+
onSelect={onActionSelect}
|
|
71
|
+
toggle={
|
|
72
|
+
<DropdownToggle
|
|
73
|
+
id="toggle-split-button-action-primary"
|
|
74
|
+
splitButtonItems={[
|
|
75
|
+
<DropdownToggleAction key="action" onClick={onActionClick}>
|
|
76
|
+
Action
|
|
77
|
+
</DropdownToggleAction>
|
|
78
|
+
]}
|
|
79
|
+
toggleVariant="primary"
|
|
80
|
+
splitButtonVariant="action"
|
|
81
|
+
onToggle={onActionToggle}
|
|
82
|
+
/>
|
|
83
|
+
}
|
|
84
|
+
isOpen={isActionOpen}
|
|
85
|
+
dropdownItems={dropdownItems}
|
|
86
|
+
/>{' '}
|
|
87
|
+
<Dropdown
|
|
88
|
+
onSelect={onCogSelect}
|
|
89
|
+
toggle={
|
|
90
|
+
<DropdownToggle
|
|
91
|
+
id="toggle-split-button-cog-primary"
|
|
92
|
+
splitButtonItems={[
|
|
93
|
+
<DropdownToggleAction key="cog-action" aria-label="Action" onClick={onCogClick}>
|
|
94
|
+
<CogIcon />
|
|
95
|
+
</DropdownToggleAction>
|
|
96
|
+
]}
|
|
97
|
+
toggleVariant="primary"
|
|
98
|
+
splitButtonVariant="action"
|
|
99
|
+
onToggle={onCogToggle}
|
|
100
|
+
/>
|
|
101
|
+
}
|
|
102
|
+
isOpen={isCogOpen}
|
|
103
|
+
dropdownItems={dropdownIconItems}
|
|
104
|
+
/>
|
|
105
|
+
</React.Fragment>
|
|
106
|
+
);
|
|
107
|
+
};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
Dropdown,
|
|
4
|
+
DropdownToggle,
|
|
5
|
+
DropdownToggleCheckbox,
|
|
6
|
+
DropdownItem,
|
|
7
|
+
DropdownSeparator
|
|
8
|
+
} from '@patternfly/react-core';
|
|
9
|
+
|
|
10
|
+
export const DropdownSplitButtonDisabled: React.FunctionComponent = () => {
|
|
11
|
+
const [isOpen, setIsOpen] = React.useState(false);
|
|
12
|
+
|
|
13
|
+
const onToggle = (isOpen: boolean) => {
|
|
14
|
+
setIsOpen(isOpen);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const onFocus = () => {
|
|
18
|
+
const element = document.getElementById('toggle-split-button');
|
|
19
|
+
element.focus();
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const onSelect = () => {
|
|
23
|
+
setIsOpen(false);
|
|
24
|
+
onFocus();
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const dropdownItems = [
|
|
28
|
+
<DropdownItem key="link">Link</DropdownItem>,
|
|
29
|
+
<DropdownItem key="action" component="button">
|
|
30
|
+
Action
|
|
31
|
+
</DropdownItem>,
|
|
32
|
+
<DropdownItem key="disabled link" isDisabled href="www.google.com">
|
|
33
|
+
Disabled link
|
|
34
|
+
</DropdownItem>,
|
|
35
|
+
<DropdownItem
|
|
36
|
+
key="disabled action"
|
|
37
|
+
isAriaDisabled
|
|
38
|
+
component="button"
|
|
39
|
+
tooltip="Tooltip for disabled item"
|
|
40
|
+
tooltipProps={{ position: 'top' }}
|
|
41
|
+
>
|
|
42
|
+
Disabled action
|
|
43
|
+
</DropdownItem>,
|
|
44
|
+
<DropdownSeparator key="separator" />,
|
|
45
|
+
<DropdownItem key="separated link">Separated link</DropdownItem>,
|
|
46
|
+
<DropdownItem key="separated action" component="button">
|
|
47
|
+
Separated action
|
|
48
|
+
</DropdownItem>
|
|
49
|
+
];
|
|
50
|
+
|
|
51
|
+
return (
|
|
52
|
+
<Dropdown
|
|
53
|
+
onSelect={onSelect}
|
|
54
|
+
toggle={
|
|
55
|
+
<DropdownToggle
|
|
56
|
+
splitButtonItems={[
|
|
57
|
+
<DropdownToggleCheckbox
|
|
58
|
+
isDisabled
|
|
59
|
+
id="split-button-disabled-checkbox"
|
|
60
|
+
key="split-checkbox"
|
|
61
|
+
aria-label="Select all"
|
|
62
|
+
/>
|
|
63
|
+
]}
|
|
64
|
+
onToggle={onToggle}
|
|
65
|
+
isDisabled
|
|
66
|
+
id="toggle-split-button-disabled"
|
|
67
|
+
/>
|
|
68
|
+
}
|
|
69
|
+
isOpen={isOpen}
|
|
70
|
+
dropdownItems={dropdownItems}
|
|
71
|
+
/>
|
|
72
|
+
);
|
|
73
|
+
};
|