@patternfly/react-core 4.214.3 → 4.215.0

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.
Files changed (70) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/esm/components/Checkbox/Checkbox.d.ts +2 -0
  3. package/dist/esm/components/Checkbox/Checkbox.d.ts.map +1 -1
  4. package/dist/esm/components/Checkbox/Checkbox.js +4 -3
  5. package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
  6. package/dist/esm/components/Menu/MenuItem.d.ts +3 -1
  7. package/dist/esm/components/Menu/MenuItem.d.ts.map +1 -1
  8. package/dist/esm/components/Menu/MenuItem.js +15 -6
  9. package/dist/esm/components/Menu/MenuItem.js.map +1 -1
  10. package/dist/esm/components/Slider/Slider.d.ts +4 -0
  11. package/dist/esm/components/Slider/Slider.d.ts.map +1 -1
  12. package/dist/esm/components/Slider/Slider.js +2 -2
  13. package/dist/esm/components/Slider/Slider.js.map +1 -1
  14. package/dist/esm/components/TextArea/TextArea.d.ts +1 -1
  15. package/dist/esm/components/TextArea/TextArea.d.ts.map +1 -1
  16. package/dist/esm/components/TextArea/TextArea.js.map +1 -1
  17. package/dist/js/components/Checkbox/Checkbox.d.ts +2 -0
  18. package/dist/js/components/Checkbox/Checkbox.d.ts.map +1 -1
  19. package/dist/js/components/Checkbox/Checkbox.js +4 -3
  20. package/dist/js/components/Checkbox/Checkbox.js.map +1 -1
  21. package/dist/js/components/Menu/MenuItem.d.ts +3 -1
  22. package/dist/js/components/Menu/MenuItem.d.ts.map +1 -1
  23. package/dist/js/components/Menu/MenuItem.js +15 -6
  24. package/dist/js/components/Menu/MenuItem.js.map +1 -1
  25. package/dist/js/components/Slider/Slider.d.ts +4 -0
  26. package/dist/js/components/Slider/Slider.d.ts.map +1 -1
  27. package/dist/js/components/Slider/Slider.js +2 -2
  28. package/dist/js/components/Slider/Slider.js.map +1 -1
  29. package/dist/js/components/TextArea/TextArea.d.ts +1 -1
  30. package/dist/js/components/TextArea/TextArea.d.ts.map +1 -1
  31. package/dist/js/components/TextArea/TextArea.js.map +1 -1
  32. package/dist/umd/react-core.js +19 -11
  33. package/dist/umd/react-core.min.js +2 -2
  34. package/package.json +5 -5
  35. package/src/components/Checkbox/Checkbox.tsx +7 -3
  36. package/src/components/Checkbox/__tests__/Checkbox.test.tsx +9 -0
  37. package/src/components/Dropdown/examples/Dropdown.md +25 -1530
  38. package/src/components/Dropdown/examples/DropdownAlignmentOnBreakpoints.tsx +64 -0
  39. package/src/components/Dropdown/examples/DropdownAppendBodyVsParent.tsx +83 -0
  40. package/src/components/Dropdown/examples/DropdownBadge.tsx +46 -0
  41. package/src/components/Dropdown/examples/DropdownBasic.tsx +57 -0
  42. package/src/components/Dropdown/examples/DropdownBasicPanel.tsx +34 -0
  43. package/src/components/Dropdown/examples/DropdownDescriptions.tsx +55 -0
  44. package/src/components/Dropdown/examples/DropdownDirectionUp.tsx +58 -0
  45. package/src/components/Dropdown/examples/DropdownDisabled.tsx +57 -0
  46. package/src/components/Dropdown/examples/DropdownGroups.tsx +55 -0
  47. package/src/components/Dropdown/examples/DropdownIconOnly.tsx +59 -0
  48. package/src/components/Dropdown/examples/DropdownImageAndText.tsx +64 -0
  49. package/src/components/Dropdown/examples/DropdownInitialSelection.tsx +57 -0
  50. package/src/components/Dropdown/examples/DropdownKebab.tsx +54 -0
  51. package/src/components/Dropdown/examples/DropdownPlainTextToggle.tsx +59 -0
  52. package/src/components/Dropdown/examples/DropdownPositionRight.tsx +58 -0
  53. package/src/components/Dropdown/examples/DropdownPrimaryToggle.tsx +57 -0
  54. package/src/components/Dropdown/examples/DropdownRouterLink.tsx +36 -0
  55. package/src/components/Dropdown/examples/DropdownSecondaryToggle.tsx +57 -0
  56. package/src/components/Dropdown/examples/DropdownSplitButton.tsx +67 -0
  57. package/src/components/Dropdown/examples/DropdownSplitButtonAction.tsx +105 -0
  58. package/src/components/Dropdown/examples/DropdownSplitButtonActionPrimary.tsx +107 -0
  59. package/src/components/Dropdown/examples/DropdownSplitButtonDisabled.tsx +73 -0
  60. package/src/components/Dropdown/examples/DropdownSplitButtonIndeterminate.tsx +78 -0
  61. package/src/components/Dropdown/examples/DropdownSplitButtonText.tsx +69 -0
  62. package/src/components/Menu/MenuItem.tsx +69 -43
  63. package/src/components/Menu/__tests__/Menu.test.tsx +23 -0
  64. package/src/components/Menu/examples/Menu.md +5 -0
  65. package/src/components/Menu/examples/MenuWithCheckbox.tsx +34 -0
  66. package/src/components/Slider/Slider.tsx +8 -0
  67. package/src/components/Slider/_tests_/Slider.test.tsx +27 -1
  68. package/src/components/TextArea/TextArea.tsx +1 -1
  69. package/src/demos/ComposableMenu/ComposableMenu.md +5 -0
  70. package/src/demos/ComposableMenu/examples/ComposableSimpleCheckboxSelect.tsx +98 -0
@@ -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
+ };