@patternfly/react-core 4.244.2 → 4.246.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.
- package/CHANGELOG.md +27 -0
- package/dist/esm/components/Alert/Alert.d.ts +4 -0
- package/dist/esm/components/Alert/Alert.d.ts.map +1 -1
- package/dist/esm/components/Alert/Alert.js.map +1 -1
- package/dist/esm/components/Breadcrumb/Breadcrumb.d.ts +4 -0
- package/dist/esm/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
- package/dist/esm/components/Breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/esm/components/Button/Button.d.ts +4 -0
- package/dist/esm/components/Button/Button.d.ts.map +1 -1
- package/dist/esm/components/Button/Button.js.map +1 -1
- package/dist/esm/components/Card/Card.d.ts +4 -0
- package/dist/esm/components/Card/Card.d.ts.map +1 -1
- package/dist/esm/components/Card/Card.js.map +1 -1
- package/dist/esm/components/Checkbox/Checkbox.d.ts +4 -0
- package/dist/esm/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/esm/components/Chip/Chip.d.ts +2 -0
- package/dist/esm/components/Chip/Chip.d.ts.map +1 -1
- package/dist/esm/components/Chip/Chip.js.map +1 -1
- package/dist/esm/components/ChipGroup/ChipGroup.d.ts +2 -0
- package/dist/esm/components/ChipGroup/ChipGroup.d.ts.map +1 -1
- package/dist/esm/components/ChipGroup/ChipGroup.js.map +1 -1
- package/dist/esm/components/ContextSelector/ContextSelector.d.ts +4 -0
- package/dist/esm/components/ContextSelector/ContextSelector.d.ts.map +1 -1
- package/dist/esm/components/ContextSelector/ContextSelector.js.map +1 -1
- package/dist/esm/components/Dropdown/Dropdown.d.ts +4 -0
- package/dist/esm/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/esm/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/esm/components/Dropdown/DropdownItem.d.ts +4 -0
- package/dist/esm/components/Dropdown/DropdownItem.d.ts.map +1 -1
- package/dist/esm/components/Dropdown/DropdownItem.js.map +1 -1
- package/dist/esm/components/Dropdown/DropdownSeparator.d.ts +4 -0
- package/dist/esm/components/Dropdown/DropdownSeparator.d.ts.map +1 -1
- package/dist/esm/components/Dropdown/DropdownSeparator.js.map +1 -1
- package/dist/esm/components/Dropdown/DropdownToggle.d.ts +4 -0
- package/dist/esm/components/Dropdown/DropdownToggle.d.ts.map +1 -1
- package/dist/esm/components/Dropdown/DropdownToggle.js.map +1 -1
- package/dist/esm/components/Dropdown/DropdownToggleCheckbox.d.ts +4 -0
- package/dist/esm/components/Dropdown/DropdownToggleCheckbox.d.ts.map +1 -1
- package/dist/esm/components/Dropdown/DropdownToggleCheckbox.js.map +1 -1
- package/dist/esm/components/Form/Form.d.ts +4 -2
- package/dist/esm/components/Form/Form.d.ts.map +1 -1
- package/dist/esm/components/Form/Form.js +4 -3
- package/dist/esm/components/Form/Form.js.map +1 -1
- package/dist/esm/components/FormSelect/FormSelect.d.ts +4 -0
- package/dist/esm/components/FormSelect/FormSelect.d.ts.map +1 -1
- package/dist/esm/components/FormSelect/FormSelect.js.map +1 -1
- package/dist/esm/components/LoginPage/LoginForm.d.ts +1 -1
- package/dist/esm/components/LoginPage/LoginForm.d.ts.map +1 -1
- package/dist/esm/components/Menu/Menu.d.ts +4 -0
- package/dist/esm/components/Menu/Menu.d.ts.map +1 -1
- package/dist/esm/components/Menu/Menu.js.map +1 -1
- package/dist/esm/components/MenuToggle/MenuToggleCheckbox.d.ts +4 -0
- package/dist/esm/components/MenuToggle/MenuToggleCheckbox.d.ts.map +1 -1
- package/dist/esm/components/MenuToggle/MenuToggleCheckbox.js.map +1 -1
- package/dist/esm/components/Modal/Modal.d.ts +4 -0
- package/dist/esm/components/Modal/Modal.d.ts.map +1 -1
- package/dist/esm/components/Modal/Modal.js.map +1 -1
- package/dist/esm/components/Modal/ModalBoxCloseButton.d.ts +2 -0
- package/dist/esm/components/Modal/ModalBoxCloseButton.d.ts.map +1 -1
- package/dist/esm/components/Modal/ModalBoxCloseButton.js.map +1 -1
- package/dist/esm/components/Modal/ModalContent.d.ts +4 -0
- package/dist/esm/components/Modal/ModalContent.d.ts.map +1 -1
- package/dist/esm/components/Modal/ModalContent.js.map +1 -1
- package/dist/esm/components/Nav/Nav.d.ts +4 -0
- package/dist/esm/components/Nav/Nav.d.ts.map +1 -1
- package/dist/esm/components/Nav/Nav.js.map +1 -1
- package/dist/esm/components/Nav/NavExpandable.d.ts +2 -0
- package/dist/esm/components/Nav/NavExpandable.d.ts.map +1 -1
- package/dist/esm/components/Nav/NavExpandable.js.map +1 -1
- package/dist/esm/components/Nav/NavItem.d.ts +4 -0
- package/dist/esm/components/Nav/NavItem.d.ts.map +1 -1
- package/dist/esm/components/Nav/NavItem.js.map +1 -1
- package/dist/esm/components/OptionsMenu/OptionsMenu.d.ts +4 -0
- package/dist/esm/components/OptionsMenu/OptionsMenu.d.ts.map +1 -1
- package/dist/esm/components/OptionsMenu/OptionsMenu.js.map +1 -1
- package/dist/esm/components/OverflowMenu/OverflowMenu.d.ts +7 -1
- package/dist/esm/components/OverflowMenu/OverflowMenu.d.ts.map +1 -1
- package/dist/esm/components/OverflowMenu/OverflowMenu.js +36 -23
- package/dist/esm/components/OverflowMenu/OverflowMenu.js.map +1 -1
- package/dist/esm/components/Pagination/Pagination.d.ts +4 -0
- package/dist/esm/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/esm/components/Pagination/Pagination.js.map +1 -1
- package/dist/esm/components/Radio/Radio.d.ts +4 -0
- package/dist/esm/components/Radio/Radio.d.ts.map +1 -1
- package/dist/esm/components/Radio/Radio.js.map +1 -1
- package/dist/esm/components/Select/Select.d.ts +4 -0
- package/dist/esm/components/Select/Select.d.ts.map +1 -1
- package/dist/esm/components/Select/Select.js.map +1 -1
- package/dist/esm/components/Switch/Switch.d.ts +4 -0
- package/dist/esm/components/Switch/Switch.d.ts.map +1 -1
- package/dist/esm/components/Switch/Switch.js.map +1 -1
- package/dist/esm/components/Tabs/Tab.d.ts +2 -0
- package/dist/esm/components/Tabs/Tab.d.ts.map +1 -1
- package/dist/esm/components/Tabs/Tab.js.map +1 -1
- package/dist/esm/components/Tabs/TabContent.d.ts +4 -0
- package/dist/esm/components/Tabs/TabContent.d.ts.map +1 -1
- package/dist/esm/components/Tabs/TabContent.js.map +1 -1
- package/dist/esm/components/Tabs/Tabs.d.ts +4 -0
- package/dist/esm/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/esm/components/Tabs/Tabs.js.map +1 -1
- package/dist/esm/components/Text/Text.d.ts +4 -0
- package/dist/esm/components/Text/Text.d.ts.map +1 -1
- package/dist/esm/components/Text/Text.js.map +1 -1
- package/dist/esm/components/TextInput/TextInput.d.ts +4 -0
- package/dist/esm/components/TextInput/TextInput.d.ts.map +1 -1
- package/dist/esm/components/TextInput/TextInput.js.map +1 -1
- package/dist/esm/components/Title/Title.d.ts +4 -0
- package/dist/esm/components/Title/Title.d.ts.map +1 -1
- package/dist/esm/components/Title/Title.js.map +1 -1
- package/dist/esm/components/Toolbar/Toolbar.d.ts +4 -0
- package/dist/esm/components/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/esm/components/Toolbar/Toolbar.js.map +1 -1
- package/dist/esm/components/TreeView/TreeView.d.ts.map +1 -1
- package/dist/esm/components/TreeView/TreeView.js +1 -1
- package/dist/esm/components/TreeView/TreeView.js.map +1 -1
- package/dist/esm/components/TreeView/TreeViewListItem.d.ts.map +1 -1
- package/dist/esm/components/TreeView/TreeViewListItem.js +2 -2
- package/dist/esm/components/TreeView/TreeViewListItem.js.map +1 -1
- package/dist/esm/components/TreeView/TreeViewRoot.d.ts +5 -3
- package/dist/esm/components/TreeView/TreeViewRoot.d.ts.map +1 -1
- package/dist/esm/components/TreeView/TreeViewRoot.js +26 -17
- package/dist/esm/components/TreeView/TreeViewRoot.js.map +1 -1
- package/dist/js/components/Alert/Alert.d.ts +4 -0
- package/dist/js/components/Alert/Alert.d.ts.map +1 -1
- package/dist/js/components/Alert/Alert.js.map +1 -1
- package/dist/js/components/Breadcrumb/Breadcrumb.d.ts +4 -0
- package/dist/js/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
- package/dist/js/components/Breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/js/components/Button/Button.d.ts +4 -0
- package/dist/js/components/Button/Button.d.ts.map +1 -1
- package/dist/js/components/Button/Button.js.map +1 -1
- package/dist/js/components/Card/Card.d.ts +4 -0
- package/dist/js/components/Card/Card.d.ts.map +1 -1
- package/dist/js/components/Card/Card.js.map +1 -1
- package/dist/js/components/Checkbox/Checkbox.d.ts +4 -0
- package/dist/js/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/js/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/js/components/Chip/Chip.d.ts +2 -0
- package/dist/js/components/Chip/Chip.d.ts.map +1 -1
- package/dist/js/components/Chip/Chip.js.map +1 -1
- package/dist/js/components/ChipGroup/ChipGroup.d.ts +2 -0
- package/dist/js/components/ChipGroup/ChipGroup.d.ts.map +1 -1
- package/dist/js/components/ChipGroup/ChipGroup.js.map +1 -1
- package/dist/js/components/ContextSelector/ContextSelector.d.ts +4 -0
- package/dist/js/components/ContextSelector/ContextSelector.d.ts.map +1 -1
- package/dist/js/components/ContextSelector/ContextSelector.js.map +1 -1
- package/dist/js/components/Dropdown/Dropdown.d.ts +4 -0
- package/dist/js/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/js/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/js/components/Dropdown/DropdownItem.d.ts +4 -0
- package/dist/js/components/Dropdown/DropdownItem.d.ts.map +1 -1
- package/dist/js/components/Dropdown/DropdownItem.js.map +1 -1
- package/dist/js/components/Dropdown/DropdownSeparator.d.ts +4 -0
- package/dist/js/components/Dropdown/DropdownSeparator.d.ts.map +1 -1
- package/dist/js/components/Dropdown/DropdownSeparator.js.map +1 -1
- package/dist/js/components/Dropdown/DropdownToggle.d.ts +4 -0
- package/dist/js/components/Dropdown/DropdownToggle.d.ts.map +1 -1
- package/dist/js/components/Dropdown/DropdownToggle.js.map +1 -1
- package/dist/js/components/Dropdown/DropdownToggleCheckbox.d.ts +4 -0
- package/dist/js/components/Dropdown/DropdownToggleCheckbox.d.ts.map +1 -1
- package/dist/js/components/Dropdown/DropdownToggleCheckbox.js.map +1 -1
- package/dist/js/components/Form/Form.d.ts +4 -2
- package/dist/js/components/Form/Form.d.ts.map +1 -1
- package/dist/js/components/Form/Form.js +4 -4
- package/dist/js/components/Form/Form.js.map +1 -1
- package/dist/js/components/FormSelect/FormSelect.d.ts +4 -0
- package/dist/js/components/FormSelect/FormSelect.d.ts.map +1 -1
- package/dist/js/components/FormSelect/FormSelect.js.map +1 -1
- package/dist/js/components/LoginPage/LoginForm.d.ts +1 -1
- package/dist/js/components/LoginPage/LoginForm.d.ts.map +1 -1
- package/dist/js/components/Menu/Menu.d.ts +4 -0
- package/dist/js/components/Menu/Menu.d.ts.map +1 -1
- package/dist/js/components/Menu/Menu.js.map +1 -1
- package/dist/js/components/MenuToggle/MenuToggleCheckbox.d.ts +4 -0
- package/dist/js/components/MenuToggle/MenuToggleCheckbox.d.ts.map +1 -1
- package/dist/js/components/MenuToggle/MenuToggleCheckbox.js.map +1 -1
- package/dist/js/components/Modal/Modal.d.ts +4 -0
- package/dist/js/components/Modal/Modal.d.ts.map +1 -1
- package/dist/js/components/Modal/Modal.js.map +1 -1
- package/dist/js/components/Modal/ModalBoxCloseButton.d.ts +2 -0
- package/dist/js/components/Modal/ModalBoxCloseButton.d.ts.map +1 -1
- package/dist/js/components/Modal/ModalBoxCloseButton.js.map +1 -1
- package/dist/js/components/Modal/ModalContent.d.ts +4 -0
- package/dist/js/components/Modal/ModalContent.d.ts.map +1 -1
- package/dist/js/components/Modal/ModalContent.js.map +1 -1
- package/dist/js/components/Nav/Nav.d.ts +4 -0
- package/dist/js/components/Nav/Nav.d.ts.map +1 -1
- package/dist/js/components/Nav/Nav.js.map +1 -1
- package/dist/js/components/Nav/NavExpandable.d.ts +2 -0
- package/dist/js/components/Nav/NavExpandable.d.ts.map +1 -1
- package/dist/js/components/Nav/NavExpandable.js.map +1 -1
- package/dist/js/components/Nav/NavItem.d.ts +4 -0
- package/dist/js/components/Nav/NavItem.d.ts.map +1 -1
- package/dist/js/components/Nav/NavItem.js.map +1 -1
- package/dist/js/components/OptionsMenu/OptionsMenu.d.ts +4 -0
- package/dist/js/components/OptionsMenu/OptionsMenu.d.ts.map +1 -1
- package/dist/js/components/OptionsMenu/OptionsMenu.js.map +1 -1
- package/dist/js/components/OverflowMenu/OverflowMenu.d.ts +7 -1
- package/dist/js/components/OverflowMenu/OverflowMenu.d.ts.map +1 -1
- package/dist/js/components/OverflowMenu/OverflowMenu.js +35 -22
- package/dist/js/components/OverflowMenu/OverflowMenu.js.map +1 -1
- package/dist/js/components/Pagination/Pagination.d.ts +4 -0
- package/dist/js/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/js/components/Pagination/Pagination.js.map +1 -1
- package/dist/js/components/Radio/Radio.d.ts +4 -0
- package/dist/js/components/Radio/Radio.d.ts.map +1 -1
- package/dist/js/components/Radio/Radio.js.map +1 -1
- package/dist/js/components/Select/Select.d.ts +4 -0
- package/dist/js/components/Select/Select.d.ts.map +1 -1
- package/dist/js/components/Select/Select.js.map +1 -1
- package/dist/js/components/Switch/Switch.d.ts +4 -0
- package/dist/js/components/Switch/Switch.d.ts.map +1 -1
- package/dist/js/components/Switch/Switch.js.map +1 -1
- package/dist/js/components/Tabs/Tab.d.ts +2 -0
- package/dist/js/components/Tabs/Tab.d.ts.map +1 -1
- package/dist/js/components/Tabs/Tab.js.map +1 -1
- package/dist/js/components/Tabs/TabContent.d.ts +4 -0
- package/dist/js/components/Tabs/TabContent.d.ts.map +1 -1
- package/dist/js/components/Tabs/TabContent.js.map +1 -1
- package/dist/js/components/Tabs/Tabs.d.ts +4 -0
- package/dist/js/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/js/components/Tabs/Tabs.js.map +1 -1
- package/dist/js/components/Text/Text.d.ts +4 -0
- package/dist/js/components/Text/Text.d.ts.map +1 -1
- package/dist/js/components/Text/Text.js.map +1 -1
- package/dist/js/components/TextInput/TextInput.d.ts +4 -0
- package/dist/js/components/TextInput/TextInput.d.ts.map +1 -1
- package/dist/js/components/TextInput/TextInput.js.map +1 -1
- package/dist/js/components/Title/Title.d.ts +4 -0
- package/dist/js/components/Title/Title.d.ts.map +1 -1
- package/dist/js/components/Title/Title.js.map +1 -1
- package/dist/js/components/Toolbar/Toolbar.d.ts +4 -0
- package/dist/js/components/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/js/components/Toolbar/Toolbar.js.map +1 -1
- package/dist/js/components/TreeView/TreeView.d.ts.map +1 -1
- package/dist/js/components/TreeView/TreeView.js +1 -1
- package/dist/js/components/TreeView/TreeView.js.map +1 -1
- package/dist/js/components/TreeView/TreeViewListItem.d.ts.map +1 -1
- package/dist/js/components/TreeView/TreeViewListItem.js +2 -2
- package/dist/js/components/TreeView/TreeViewListItem.js.map +1 -1
- package/dist/js/components/TreeView/TreeViewRoot.d.ts +5 -3
- package/dist/js/components/TreeView/TreeViewRoot.d.ts.map +1 -1
- package/dist/js/components/TreeView/TreeViewRoot.js +26 -17
- package/dist/js/components/TreeView/TreeViewRoot.js.map +1 -1
- package/dist/umd/react-core.min.css +69 -69
- package/dist/umd/react-core.min.js +1 -1
- package/package.json +2 -2
- package/src/components/Alert/Alert.tsx +4 -0
- package/src/components/Breadcrumb/Breadcrumb.tsx +4 -0
- package/src/components/Button/Button.tsx +4 -0
- package/src/components/Card/Card.tsx +4 -0
- package/src/components/Checkbox/Checkbox.tsx +4 -0
- package/src/components/Chip/Chip.tsx +2 -0
- package/src/components/ChipGroup/ChipGroup.tsx +2 -0
- package/src/components/ContextSelector/ContextSelector.tsx +4 -0
- package/src/components/Dropdown/Dropdown.tsx +4 -0
- package/src/components/Dropdown/DropdownItem.tsx +4 -0
- package/src/components/Dropdown/DropdownSeparator.tsx +4 -0
- package/src/components/Dropdown/DropdownToggle.tsx +4 -0
- package/src/components/Dropdown/DropdownToggleCheckbox.tsx +4 -0
- package/src/components/Dropdown/examples/Dropdown.md +1 -1
- package/src/components/Form/Form.tsx +9 -2
- package/src/components/FormSelect/FormSelect.tsx +4 -0
- package/src/components/LoginPage/LoginForm.tsx +1 -1
- package/src/components/Menu/Menu.tsx +4 -0
- package/src/components/MenuToggle/MenuToggleCheckbox.tsx +4 -0
- package/src/components/Modal/Modal.tsx +4 -0
- package/src/components/Modal/ModalBoxCloseButton.tsx +2 -0
- package/src/components/Modal/ModalContent.tsx +4 -0
- package/src/components/Nav/Nav.tsx +4 -0
- package/src/components/Nav/NavExpandable.tsx +2 -0
- package/src/components/Nav/NavItem.tsx +4 -0
- package/src/components/OptionsMenu/OptionsMenu.tsx +4 -0
- package/src/components/OverflowMenu/OverflowMenu.tsx +46 -25
- package/src/components/OverflowMenu/__tests__/OverflowMenu.test.tsx +38 -0
- package/src/components/OverflowMenu/examples/OverflowMenu.md +127 -35
- package/src/components/OverflowMenu/examples/OverflowMenuBreakpointOnContainer.tsx +100 -0
- package/src/components/Pagination/Pagination.tsx +4 -0
- package/src/components/Radio/Radio.tsx +4 -0
- package/src/components/Select/Select.tsx +4 -0
- package/src/components/Switch/Switch.tsx +4 -0
- package/src/components/Tabs/Tab.tsx +2 -0
- package/src/components/Tabs/TabContent.tsx +4 -0
- package/src/components/Tabs/Tabs.tsx +4 -0
- package/src/components/Text/Text.tsx +4 -0
- package/src/components/TextInput/TextInput.tsx +4 -0
- package/src/components/Title/Title.tsx +4 -0
- package/src/components/Toolbar/Toolbar.tsx +4 -0
- package/src/components/TreeView/TreeView.tsx +8 -1
- package/src/components/TreeView/TreeViewListItem.tsx +4 -3
- package/src/components/TreeView/TreeViewRoot.tsx +38 -18
- package/src/components/TreeView/__tests__/__snapshots__/TreeView.test.tsx.snap +0 -51
- package/src/demos/examples/DashboardHeader.js +35 -6
- package/src/helpers/OUIA/OUIA.md +1 -1
|
@@ -2,7 +2,15 @@
|
|
|
2
2
|
id: Overflow menu
|
|
3
3
|
section: components
|
|
4
4
|
cssPrefix: pf-c-overflow-menu
|
|
5
|
-
propComponents:
|
|
5
|
+
propComponents:
|
|
6
|
+
[
|
|
7
|
+
'OverflowMenu',
|
|
8
|
+
'OverflowMenuContent',
|
|
9
|
+
'OverflowMenuControl',
|
|
10
|
+
'OverflowMenuDropdownItem',
|
|
11
|
+
'OverflowMenuGroup',
|
|
12
|
+
'OverflowMenuItem',
|
|
13
|
+
]
|
|
6
14
|
---
|
|
7
15
|
|
|
8
16
|
import AlignLeftIcon from '@patternfly/react-icons/dist/esm/icons/align-left-icon';
|
|
@@ -10,10 +18,19 @@ import AlignCenterIcon from '@patternfly/react-icons/dist/esm/icons/align-center
|
|
|
10
18
|
import AlignRightIcon from '@patternfly/react-icons/dist/esm/icons/align-right-icon';
|
|
11
19
|
|
|
12
20
|
## Examples
|
|
21
|
+
|
|
13
22
|
### Simple (responsive)
|
|
23
|
+
|
|
14
24
|
```js
|
|
15
25
|
import React from 'react';
|
|
16
|
-
import {
|
|
26
|
+
import {
|
|
27
|
+
OverflowMenu,
|
|
28
|
+
OverflowMenuControl,
|
|
29
|
+
OverflowMenuContent,
|
|
30
|
+
OverflowMenuGroup,
|
|
31
|
+
OverflowMenuItem,
|
|
32
|
+
OverflowMenuDropdownItem
|
|
33
|
+
} from '@patternfly/react-core';
|
|
17
34
|
import { Dropdown, KebabToggle } from '@patternfly/react-core';
|
|
18
35
|
|
|
19
36
|
class SimpleOverflowMenu extends React.Component {
|
|
@@ -37,12 +54,22 @@ class SimpleOverflowMenu extends React.Component {
|
|
|
37
54
|
render() {
|
|
38
55
|
const { isOpen } = this.state;
|
|
39
56
|
const dropdownItems = [
|
|
40
|
-
<OverflowMenuDropdownItem key="item1" isShared>
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
<OverflowMenuDropdownItem key="
|
|
44
|
-
|
|
45
|
-
|
|
57
|
+
<OverflowMenuDropdownItem key="item1" isShared>
|
|
58
|
+
Item 1
|
|
59
|
+
</OverflowMenuDropdownItem>,
|
|
60
|
+
<OverflowMenuDropdownItem key="item2" isShared>
|
|
61
|
+
Item 2
|
|
62
|
+
</OverflowMenuDropdownItem>,
|
|
63
|
+
<OverflowMenuDropdownItem key="item3" isShared>
|
|
64
|
+
Item 3
|
|
65
|
+
</OverflowMenuDropdownItem>,
|
|
66
|
+
<OverflowMenuDropdownItem key="item4" isShared>
|
|
67
|
+
Item 4
|
|
68
|
+
</OverflowMenuDropdownItem>,
|
|
69
|
+
<OverflowMenuDropdownItem key="item5" isShared>
|
|
70
|
+
Item 5
|
|
71
|
+
</OverflowMenuDropdownItem>
|
|
72
|
+
];
|
|
46
73
|
return (
|
|
47
74
|
<OverflowMenu breakpoint="lg">
|
|
48
75
|
<OverflowMenuContent>
|
|
@@ -66,15 +93,23 @@ class SimpleOverflowMenu extends React.Component {
|
|
|
66
93
|
/>
|
|
67
94
|
</OverflowMenuControl>
|
|
68
95
|
</OverflowMenu>
|
|
69
|
-
)
|
|
96
|
+
);
|
|
70
97
|
}
|
|
71
98
|
}
|
|
72
99
|
```
|
|
73
100
|
|
|
74
101
|
### Group types
|
|
102
|
+
|
|
75
103
|
```js
|
|
76
104
|
import React from 'react';
|
|
77
|
-
import {
|
|
105
|
+
import {
|
|
106
|
+
OverflowMenu,
|
|
107
|
+
OverflowMenuControl,
|
|
108
|
+
OverflowMenuContent,
|
|
109
|
+
OverflowMenuGroup,
|
|
110
|
+
OverflowMenuItem,
|
|
111
|
+
OverflowMenuDropdownItem
|
|
112
|
+
} from '@patternfly/react-core';
|
|
78
113
|
import { Dropdown, KebabToggle, Button, ButtonVariant } from '@patternfly/react-core';
|
|
79
114
|
import AlignLeftIcon from '@patternfly/react-icons/dist/esm/icons/align-left-icon';
|
|
80
115
|
import AlignCenterIcon from '@patternfly/react-icons/dist/esm/icons/align-center-icon';
|
|
@@ -101,15 +136,33 @@ class OverflowMenuGroupTypes extends React.Component {
|
|
|
101
136
|
render() {
|
|
102
137
|
const { isOpen } = this.state;
|
|
103
138
|
const dropdownItems = [
|
|
104
|
-
<OverflowMenuDropdownItem key="item1" isShared>
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
<OverflowMenuDropdownItem key="
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
<OverflowMenuDropdownItem key="
|
|
111
|
-
|
|
112
|
-
|
|
139
|
+
<OverflowMenuDropdownItem key="item1" isShared>
|
|
140
|
+
Item 1
|
|
141
|
+
</OverflowMenuDropdownItem>,
|
|
142
|
+
<OverflowMenuDropdownItem key="item2" isShared>
|
|
143
|
+
Item 2
|
|
144
|
+
</OverflowMenuDropdownItem>,
|
|
145
|
+
<OverflowMenuDropdownItem key="item3" isShared>
|
|
146
|
+
Item 3
|
|
147
|
+
</OverflowMenuDropdownItem>,
|
|
148
|
+
<OverflowMenuDropdownItem key="primary" isShared>
|
|
149
|
+
Primary
|
|
150
|
+
</OverflowMenuDropdownItem>,
|
|
151
|
+
<OverflowMenuDropdownItem key="secondary" isShared>
|
|
152
|
+
Secondary
|
|
153
|
+
</OverflowMenuDropdownItem>,
|
|
154
|
+
<OverflowMenuDropdownItem key="tertiary" isShared>
|
|
155
|
+
Tertiary
|
|
156
|
+
</OverflowMenuDropdownItem>,
|
|
157
|
+
<OverflowMenuDropdownItem key="action1" isShared>
|
|
158
|
+
Action 1
|
|
159
|
+
</OverflowMenuDropdownItem>,
|
|
160
|
+
<OverflowMenuDropdownItem key="action2" isShared>
|
|
161
|
+
Action 2
|
|
162
|
+
</OverflowMenuDropdownItem>,
|
|
163
|
+
<OverflowMenuDropdownItem key="action3" isShared>
|
|
164
|
+
Action 3
|
|
165
|
+
</OverflowMenuDropdownItem>
|
|
113
166
|
];
|
|
114
167
|
return (
|
|
115
168
|
<OverflowMenu breakpoint="lg">
|
|
@@ -160,16 +213,23 @@ class OverflowMenuGroupTypes extends React.Component {
|
|
|
160
213
|
/>
|
|
161
214
|
</OverflowMenuControl>
|
|
162
215
|
</OverflowMenu>
|
|
163
|
-
)
|
|
216
|
+
);
|
|
164
217
|
}
|
|
165
218
|
}
|
|
166
219
|
```
|
|
167
220
|
|
|
168
|
-
|
|
169
221
|
### Multiple groups
|
|
222
|
+
|
|
170
223
|
```js
|
|
171
224
|
import React from 'react';
|
|
172
|
-
import {
|
|
225
|
+
import {
|
|
226
|
+
OverflowMenu,
|
|
227
|
+
OverflowMenuControl,
|
|
228
|
+
OverflowMenuContent,
|
|
229
|
+
OverflowMenuGroup,
|
|
230
|
+
OverflowMenuItem,
|
|
231
|
+
OverflowMenuDropdownItem
|
|
232
|
+
} from '@patternfly/react-core';
|
|
173
233
|
import { Dropdown, KebabToggle, Button, ButtonVariant } from '@patternfly/react-core';
|
|
174
234
|
import AlignLeftIcon from '@patternfly/react-icons/dist/esm/icons/align-left-icon';
|
|
175
235
|
import AlignCenterIcon from '@patternfly/react-icons/dist/esm/icons/align-center-icon';
|
|
@@ -196,13 +256,25 @@ class OverflowMenuAdditionalOptions extends React.Component {
|
|
|
196
256
|
render() {
|
|
197
257
|
const { isOpen } = this.state;
|
|
198
258
|
const dropdownItems = [
|
|
199
|
-
<OverflowMenuDropdownItem key="1" isShared>
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
<OverflowMenuDropdownItem key="
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
<OverflowMenuDropdownItem key="
|
|
259
|
+
<OverflowMenuDropdownItem key="1" isShared>
|
|
260
|
+
Primary
|
|
261
|
+
</OverflowMenuDropdownItem>,
|
|
262
|
+
<OverflowMenuDropdownItem key="2" isShared>
|
|
263
|
+
Secondary
|
|
264
|
+
</OverflowMenuDropdownItem>,
|
|
265
|
+
<OverflowMenuDropdownItem key="3" isShared>
|
|
266
|
+
Tertiary
|
|
267
|
+
</OverflowMenuDropdownItem>,
|
|
268
|
+
<OverflowMenuDropdownItem key="4" isShared>
|
|
269
|
+
Action 4
|
|
270
|
+
</OverflowMenuDropdownItem>,
|
|
271
|
+
<OverflowMenuDropdownItem key="5" isShared>
|
|
272
|
+
Action 5
|
|
273
|
+
</OverflowMenuDropdownItem>,
|
|
274
|
+
<OverflowMenuDropdownItem key="6" isShared>
|
|
275
|
+
Action 6
|
|
276
|
+
</OverflowMenuDropdownItem>,
|
|
277
|
+
<OverflowMenuDropdownItem key="7">Action 7</OverflowMenuDropdownItem>
|
|
206
278
|
];
|
|
207
279
|
return (
|
|
208
280
|
<OverflowMenu breakpoint="lg">
|
|
@@ -248,16 +320,23 @@ class OverflowMenuAdditionalOptions extends React.Component {
|
|
|
248
320
|
/>
|
|
249
321
|
</OverflowMenuControl>
|
|
250
322
|
</OverflowMenu>
|
|
251
|
-
)
|
|
323
|
+
);
|
|
252
324
|
}
|
|
253
325
|
}
|
|
254
326
|
```
|
|
255
327
|
|
|
256
|
-
|
|
257
328
|
### Persistent
|
|
329
|
+
|
|
258
330
|
```js
|
|
259
331
|
import React from 'react';
|
|
260
|
-
import {
|
|
332
|
+
import {
|
|
333
|
+
OverflowMenu,
|
|
334
|
+
OverflowMenuControl,
|
|
335
|
+
OverflowMenuContent,
|
|
336
|
+
OverflowMenuGroup,
|
|
337
|
+
OverflowMenuItem,
|
|
338
|
+
OverflowMenuDropdownItem
|
|
339
|
+
} from '@patternfly/react-core';
|
|
261
340
|
import { Dropdown, KebabToggle, Button, ButtonVariant } from '@patternfly/react-core';
|
|
262
341
|
|
|
263
342
|
class OverflowMenuPersist extends React.Component {
|
|
@@ -281,8 +360,12 @@ class OverflowMenuPersist extends React.Component {
|
|
|
281
360
|
render() {
|
|
282
361
|
const { isOpen } = this.state;
|
|
283
362
|
const dropdownItems = [
|
|
284
|
-
<OverflowMenuDropdownItem key="secondary" isShared>
|
|
285
|
-
|
|
363
|
+
<OverflowMenuDropdownItem key="secondary" isShared>
|
|
364
|
+
Secondary
|
|
365
|
+
</OverflowMenuDropdownItem>,
|
|
366
|
+
<OverflowMenuDropdownItem key="tertiary" isShared>
|
|
367
|
+
Tertiary
|
|
368
|
+
</OverflowMenuDropdownItem>,
|
|
286
369
|
<OverflowMenuDropdownItem key="action">Action 4</OverflowMenuDropdownItem>
|
|
287
370
|
];
|
|
288
371
|
return (
|
|
@@ -312,7 +395,16 @@ class OverflowMenuPersist extends React.Component {
|
|
|
312
395
|
/>
|
|
313
396
|
</OverflowMenuControl>
|
|
314
397
|
</OverflowMenu>
|
|
315
|
-
)
|
|
398
|
+
);
|
|
316
399
|
}
|
|
317
400
|
}
|
|
318
401
|
```
|
|
402
|
+
|
|
403
|
+
### Breakpoint on container
|
|
404
|
+
|
|
405
|
+
By passing in the `breakpointReference` property, the overflow menu's breakpoint will be relative to the width of the reference container rather than the viewport width.
|
|
406
|
+
|
|
407
|
+
You can change the container width in this example by adjusting the slider. As the container width changes, the overflow menu will change between a horizontal menu and a vertical dropdown despite the viewport width not changing.
|
|
408
|
+
|
|
409
|
+
```ts file="./OverflowMenuBreakpointOnContainer.tsx"
|
|
410
|
+
```
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
OverflowMenu,
|
|
4
|
+
OverflowMenuControl,
|
|
5
|
+
OverflowMenuContent,
|
|
6
|
+
OverflowMenuGroup,
|
|
7
|
+
OverflowMenuItem,
|
|
8
|
+
OverflowMenuDropdownItem,
|
|
9
|
+
Dropdown,
|
|
10
|
+
KebabToggle,
|
|
11
|
+
Slider
|
|
12
|
+
} from '@patternfly/react-core';
|
|
13
|
+
|
|
14
|
+
export const OverflowMenuBreakpointOnContainer: React.FunctionComponent = () => {
|
|
15
|
+
const [isOpen, setIsOpen] = React.useState(false);
|
|
16
|
+
const [containerWidth, setContainerWidth] = React.useState(100);
|
|
17
|
+
const containerRef = React.useRef<HTMLDivElement>(null);
|
|
18
|
+
|
|
19
|
+
const onToggle = (isOpen: boolean) => {
|
|
20
|
+
setIsOpen(isOpen);
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const onSelect = () => {
|
|
24
|
+
setIsOpen(!isOpen);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const onChange = (value: number) => {
|
|
28
|
+
setContainerWidth(value);
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const containerStyles = {
|
|
32
|
+
width: `${containerWidth}%`,
|
|
33
|
+
padding: '1rem',
|
|
34
|
+
borderWidth: '2px',
|
|
35
|
+
borderStyle: 'dashed'
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const dropdownItems = [
|
|
39
|
+
<OverflowMenuDropdownItem key="item1" isShared>
|
|
40
|
+
Item 1
|
|
41
|
+
</OverflowMenuDropdownItem>,
|
|
42
|
+
<OverflowMenuDropdownItem key="item2" isShared>
|
|
43
|
+
Item 2
|
|
44
|
+
</OverflowMenuDropdownItem>,
|
|
45
|
+
<OverflowMenuDropdownItem key="item3" isShared>
|
|
46
|
+
Item 3
|
|
47
|
+
</OverflowMenuDropdownItem>,
|
|
48
|
+
<OverflowMenuDropdownItem key="item4" isShared>
|
|
49
|
+
Item 4
|
|
50
|
+
</OverflowMenuDropdownItem>,
|
|
51
|
+
<OverflowMenuDropdownItem key="item5" isShared>
|
|
52
|
+
Item 5
|
|
53
|
+
</OverflowMenuDropdownItem>
|
|
54
|
+
];
|
|
55
|
+
|
|
56
|
+
return (
|
|
57
|
+
<>
|
|
58
|
+
<div style={{ width: '100%', maxWidth: '400px' }}>
|
|
59
|
+
<div>
|
|
60
|
+
<span id="overflowMenu-hasBreakpointOnContainer-slider-label">Current container width</span>: {containerWidth}
|
|
61
|
+
%
|
|
62
|
+
</div>
|
|
63
|
+
<Slider
|
|
64
|
+
value={containerWidth}
|
|
65
|
+
onChange={onChange}
|
|
66
|
+
max={100}
|
|
67
|
+
min={20}
|
|
68
|
+
step={20}
|
|
69
|
+
showTicks
|
|
70
|
+
showBoundaries={false}
|
|
71
|
+
aria-labelledby="overflowMenu-hasBreakpointOnContainer-slider-label"
|
|
72
|
+
/>
|
|
73
|
+
</div>
|
|
74
|
+
<div ref={containerRef} id="breakpoint-reference-container" style={containerStyles}>
|
|
75
|
+
<OverflowMenu breakpointReference={containerRef} breakpoint="sm">
|
|
76
|
+
<OverflowMenuContent>
|
|
77
|
+
<OverflowMenuItem>Item 1</OverflowMenuItem>
|
|
78
|
+
<OverflowMenuItem>Item 2</OverflowMenuItem>
|
|
79
|
+
<OverflowMenuGroup>
|
|
80
|
+
<OverflowMenuItem>Item 3</OverflowMenuItem>
|
|
81
|
+
<OverflowMenuItem>Item 4</OverflowMenuItem>
|
|
82
|
+
<OverflowMenuItem>Item 5</OverflowMenuItem>
|
|
83
|
+
</OverflowMenuGroup>
|
|
84
|
+
</OverflowMenuContent>
|
|
85
|
+
<OverflowMenuControl>
|
|
86
|
+
<Dropdown
|
|
87
|
+
onSelect={onSelect}
|
|
88
|
+
toggle={<KebabToggle onToggle={onToggle} />}
|
|
89
|
+
isOpen={isOpen}
|
|
90
|
+
isPlain
|
|
91
|
+
dropdownItems={dropdownItems}
|
|
92
|
+
isFlipEnabled
|
|
93
|
+
menuAppendTo="parent"
|
|
94
|
+
/>
|
|
95
|
+
</OverflowMenuControl>
|
|
96
|
+
</OverflowMenu>
|
|
97
|
+
</div>
|
|
98
|
+
</>
|
|
99
|
+
);
|
|
100
|
+
};
|
|
@@ -159,6 +159,10 @@ export interface PaginationProps extends React.HTMLProps<HTMLDivElement>, OUIAPr
|
|
|
159
159
|
variant?: 'top' | 'bottom' | PaginationVariant;
|
|
160
160
|
/** Id to ideintify widget on page. */
|
|
161
161
|
widgetId?: string;
|
|
162
|
+
/** Value to overwrite the randomly generated data-ouia-component-id.*/
|
|
163
|
+
ouiaId?: number | string;
|
|
164
|
+
/** Set the value of data-ouia-safe. Only set to true when the component is in a static state, i.e. no animations are occurring. At all other times, this value must be false. */
|
|
165
|
+
ouiaSafe?: boolean;
|
|
162
166
|
}
|
|
163
167
|
|
|
164
168
|
const handleInputWidth = (lastPage: number, node: HTMLDivElement) => {
|
|
@@ -35,6 +35,10 @@ export interface RadioProps
|
|
|
35
35
|
description?: React.ReactNode;
|
|
36
36
|
/** Body of the radio. */
|
|
37
37
|
body?: React.ReactNode;
|
|
38
|
+
/** Value to overwrite the randomly generated data-ouia-component-id.*/
|
|
39
|
+
ouiaId?: number | string;
|
|
40
|
+
/** Set the value of data-ouia-safe. Only set to true when the component is in a static state, i.e. no animations are occurring. At all other times, this value must be false. */
|
|
41
|
+
ouiaSafe?: boolean;
|
|
38
42
|
}
|
|
39
43
|
|
|
40
44
|
export class Radio extends React.Component<RadioProps, { ouiaStateId: string }> {
|
|
@@ -184,6 +184,10 @@ export interface SelectProps
|
|
|
184
184
|
isFlipEnabled?: boolean;
|
|
185
185
|
/** @beta Opt-in for updated popper that does not use findDOMNode. */
|
|
186
186
|
removeFindDomNode?: boolean;
|
|
187
|
+
/** Value to overwrite the randomly generated data-ouia-component-id.*/
|
|
188
|
+
ouiaId?: number | string;
|
|
189
|
+
/** Set the value of data-ouia-safe. Only set to true when the component is in a static state, i.e. no animations are occurring. At all other times, this value must be false. */
|
|
190
|
+
ouiaSafe?: boolean;
|
|
187
191
|
}
|
|
188
192
|
|
|
189
193
|
export interface SelectState {
|
|
@@ -34,6 +34,10 @@ export interface SwitchProps
|
|
|
34
34
|
'aria-label'?: string;
|
|
35
35
|
/** Flag to reverse the layout of toggle and label (toggle on right). */
|
|
36
36
|
isReversed?: boolean;
|
|
37
|
+
/** Value to overwrite the randomly generated data-ouia-component-id.*/
|
|
38
|
+
ouiaId?: number | string;
|
|
39
|
+
/** Set the value of data-ouia-safe. Only set to true when the component is in a static state, i.e. no animations are occurring. At all other times, this value must be false. */
|
|
40
|
+
ouiaSafe?: boolean;
|
|
37
41
|
}
|
|
38
42
|
|
|
39
43
|
export class Switch extends React.Component<SwitchProps & OUIAProps, { ouiaStateId: string }> {
|
|
@@ -39,6 +39,8 @@ export interface TabProps extends Omit<React.HTMLProps<HTMLAnchorElement | HTMLB
|
|
|
39
39
|
closeButtonAriaLabel?: string;
|
|
40
40
|
/** @beta Flag indicating the close button should be disabled */
|
|
41
41
|
isCloseDisabled?: boolean;
|
|
42
|
+
/** Value to set the data-ouia-component-id for the tab button.*/
|
|
43
|
+
ouiaId?: number | string;
|
|
42
44
|
}
|
|
43
45
|
|
|
44
46
|
const TabBase: React.FunctionComponent<TabProps> = ({
|
|
@@ -21,6 +21,10 @@ export interface TabContentProps extends Omit<React.HTMLProps<HTMLElement>, 'ref
|
|
|
21
21
|
id: string;
|
|
22
22
|
/** title of controlling Tab if used outside Tabs component */
|
|
23
23
|
'aria-label'?: string;
|
|
24
|
+
/** Value to overwrite the randomly generated data-ouia-component-id.*/
|
|
25
|
+
ouiaId?: number | string;
|
|
26
|
+
/** Set the value of data-ouia-safe. Only set to true when the component is in a static state, i.e. no animations are occurring. At all other times, this value must be false. */
|
|
27
|
+
ouiaSafe?: boolean;
|
|
24
28
|
}
|
|
25
29
|
|
|
26
30
|
const variantStyle = {
|
|
@@ -106,6 +106,10 @@ export interface TabsProps extends Omit<React.HTMLProps<HTMLElement | HTMLDivEle
|
|
|
106
106
|
onToggle?: (isExpanded: boolean) => void;
|
|
107
107
|
/** @beta Flag which places overflowing tabs into a menu triggered by the last tab. Additionally an object can be passed with custom settings for the overflow tab. */
|
|
108
108
|
isOverflowHorizontal?: boolean | HorizontalOverflowObject;
|
|
109
|
+
/** Value to overwrite the randomly generated data-ouia-component-id.*/
|
|
110
|
+
ouiaId?: number | string;
|
|
111
|
+
/** Set the value of data-ouia-safe. Only set to true when the component is in a static state, i.e. no animations are occurring. At all other times, this value must be false. */
|
|
112
|
+
ouiaSafe?: boolean;
|
|
109
113
|
}
|
|
110
114
|
|
|
111
115
|
const variantStyle = {
|
|
@@ -26,6 +26,10 @@ export interface TextProps extends React.HTMLProps<HTMLElement>, OUIAProps {
|
|
|
26
26
|
className?: string;
|
|
27
27
|
/** Flag to indicate the link has visited styles applied if the browser determines the link has been visited */
|
|
28
28
|
isVisitedLink?: boolean;
|
|
29
|
+
/** Value to overwrite the randomly generated data-ouia-component-id.*/
|
|
30
|
+
ouiaId?: number | string;
|
|
31
|
+
/** Set the value of data-ouia-safe. Only set to true when the component is in a static state, i.e. no animations are occurring. At all other times, this value must be false. */
|
|
32
|
+
ouiaSafe?: boolean;
|
|
29
33
|
}
|
|
30
34
|
|
|
31
35
|
export const Text: React.FunctionComponent<TextProps> = ({
|
|
@@ -77,6 +77,10 @@ export interface TextInputProps
|
|
|
77
77
|
customIconUrl?: string;
|
|
78
78
|
/** Dimensions for the custom icon set as the text input's background-size */
|
|
79
79
|
customIconDimensions?: string;
|
|
80
|
+
/** Value to overwrite the randomly generated data-ouia-component-id.*/
|
|
81
|
+
ouiaId?: number | string;
|
|
82
|
+
/** Set the value of data-ouia-safe. Only set to true when the component is in a static state, i.e. no animations are occurring. At all other times, this value must be false. */
|
|
83
|
+
ouiaSafe?: boolean;
|
|
80
84
|
}
|
|
81
85
|
|
|
82
86
|
interface TextInputState {
|
|
@@ -32,6 +32,10 @@ export interface TitleProps extends Omit<React.HTMLProps<HTMLHeadingElement>, 's
|
|
|
32
32
|
className?: string;
|
|
33
33
|
/** The heading level to use */
|
|
34
34
|
headingLevel: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
|
|
35
|
+
/** Value to overwrite the randomly generated data-ouia-component-id.*/
|
|
36
|
+
ouiaId?: number | string;
|
|
37
|
+
/** Set the value of data-ouia-safe. Only set to true when the component is in a static state, i.e. no animations are occurring. At all other times, this value must be false. */
|
|
38
|
+
ouiaSafe?: boolean;
|
|
35
39
|
}
|
|
36
40
|
|
|
37
41
|
export const Title: React.FunctionComponent<TitleProps> = ({
|
|
@@ -46,6 +46,10 @@ export interface ToolbarProps extends React.HTMLProps<HTMLDivElement>, OUIAProps
|
|
|
46
46
|
};
|
|
47
47
|
/** Text to display in the total number of applied filters ToolbarFilter */
|
|
48
48
|
numberOfFiltersText?: (numberOfFilters: number) => string;
|
|
49
|
+
/** Value to overwrite the randomly generated data-ouia-component-id.*/
|
|
50
|
+
ouiaId?: number | string;
|
|
51
|
+
/** Set the value of data-ouia-safe. Only set to true when the component is in a static state, i.e. no animations are occurring. At all other times, this value must be false. */
|
|
52
|
+
ouiaSafe?: boolean;
|
|
49
53
|
}
|
|
50
54
|
|
|
51
55
|
export interface ToolbarState {
|
|
@@ -168,7 +168,14 @@ export const TreeView: React.FunctionComponent<TreeViewProps> = ({
|
|
|
168
168
|
{parentItem ? (
|
|
169
169
|
treeViewList
|
|
170
170
|
) : (
|
|
171
|
-
<TreeViewRoot
|
|
171
|
+
<TreeViewRoot
|
|
172
|
+
hasSelectableNodes={hasSelectableNodes}
|
|
173
|
+
hasChecks={hasChecks}
|
|
174
|
+
hasGuides={hasGuides}
|
|
175
|
+
variant={variant}
|
|
176
|
+
className={className}
|
|
177
|
+
{...props}
|
|
178
|
+
>
|
|
172
179
|
{treeViewList}
|
|
173
180
|
</TreeViewRoot>
|
|
174
181
|
)}
|
|
@@ -155,8 +155,10 @@ const TreeViewListItemBase: React.FunctionComponent<TreeViewListItemProps> = ({
|
|
|
155
155
|
const content = (
|
|
156
156
|
<>
|
|
157
157
|
{isCompact && title && <span className={css(styles.treeViewNodeTitle)}>{title}</span>}
|
|
158
|
-
{
|
|
159
|
-
<
|
|
158
|
+
{isSelectable ? (
|
|
159
|
+
<button tabIndex={-1} className={css(styles.treeViewNodeText)}>
|
|
160
|
+
{name}
|
|
161
|
+
</button>
|
|
160
162
|
) : (
|
|
161
163
|
<span className={css(styles.treeViewNodeText)}>{name}</span>
|
|
162
164
|
)}
|
|
@@ -210,7 +212,6 @@ const TreeViewListItemBase: React.FunctionComponent<TreeViewListItemProps> = ({
|
|
|
210
212
|
}
|
|
211
213
|
}
|
|
212
214
|
}}
|
|
213
|
-
tabIndex={isSelectable ? 0 : -1}
|
|
214
215
|
{...(hasCheck && { htmlFor: randomId })}
|
|
215
216
|
{...((hasCheck || (isSelectable && children)) && { id: `label-${randomId}` })}
|
|
216
217
|
>
|
|
@@ -3,18 +3,21 @@ import { css } from '@patternfly/react-styles';
|
|
|
3
3
|
import styles from '@patternfly/react-styles/css/components/TreeView/tree-view';
|
|
4
4
|
import { canUseDOM } from '../../helpers/util';
|
|
5
5
|
import { handleArrows } from '../../helpers';
|
|
6
|
+
import { KeyTypes } from '../../helpers/constants';
|
|
6
7
|
|
|
7
8
|
export interface TreeViewRootProps {
|
|
8
|
-
/** Child nodes of the tree view
|
|
9
|
+
/** Child nodes of the tree view */
|
|
9
10
|
children: React.ReactNode;
|
|
10
|
-
/** Class to add to add if not passed a parentItem property. */
|
|
11
|
-
className?: string;
|
|
12
11
|
/** Flag indicating if the tree view has checkboxes. */
|
|
13
12
|
hasChecks?: boolean;
|
|
14
13
|
/** Flag indicating if tree view has guide lines. */
|
|
15
14
|
hasGuides?: boolean;
|
|
16
15
|
/** Variant presentation styles for the tree view. */
|
|
17
16
|
variant?: 'default' | 'compact' | 'compactNoBackground';
|
|
17
|
+
/** Class to add to add if not passed a parentItem */
|
|
18
|
+
className?: string;
|
|
19
|
+
/** Flag indicating that tree nodes should be independently selectable, even when having children */
|
|
20
|
+
hasSelectableNodes?: boolean;
|
|
18
21
|
}
|
|
19
22
|
|
|
20
23
|
export class TreeViewRoot extends React.Component<TreeViewRootProps> {
|
|
@@ -23,16 +26,29 @@ export class TreeViewRoot extends React.Component<TreeViewRootProps> {
|
|
|
23
26
|
|
|
24
27
|
componentDidMount() {
|
|
25
28
|
if (canUseDOM) {
|
|
26
|
-
window.addEventListener(
|
|
29
|
+
window.addEventListener(
|
|
30
|
+
'keydown',
|
|
31
|
+
this.props.hasChecks || this.props.hasSelectableNodes ? this.handleKeysCheckbox : this.handleKeys
|
|
32
|
+
);
|
|
27
33
|
}
|
|
28
|
-
if (this.props.hasChecks) {
|
|
29
|
-
const firstToggle = this.treeRef.current
|
|
34
|
+
if (this.props.hasChecks || this.props.hasSelectableNodes) {
|
|
35
|
+
const firstToggle = this.treeRef.current.getElementsByClassName('pf-c-tree-view__node-toggle')[0] as HTMLElement;
|
|
30
36
|
if (firstToggle) {
|
|
31
37
|
firstToggle.tabIndex = 0;
|
|
32
38
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
firstInput
|
|
39
|
+
if (this.props.hasChecks) {
|
|
40
|
+
const firstInput = this.treeRef.current.getElementsByTagName('INPUT')[0] as HTMLElement;
|
|
41
|
+
if (firstInput) {
|
|
42
|
+
firstInput.tabIndex = 0;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (this.props.hasSelectableNodes) {
|
|
46
|
+
const firstTextButton = this.treeRef.current.getElementsByClassName(
|
|
47
|
+
'pf-c-tree-view__node-text'
|
|
48
|
+
)[0] as HTMLElement;
|
|
49
|
+
if (firstTextButton) {
|
|
50
|
+
firstTextButton.tabIndex = 0;
|
|
51
|
+
}
|
|
36
52
|
}
|
|
37
53
|
} else {
|
|
38
54
|
(this.treeRef.current?.getElementsByClassName('pf-c-tree-view__node')[0] as HTMLElement).tabIndex = 0;
|
|
@@ -41,12 +57,15 @@ export class TreeViewRoot extends React.Component<TreeViewRootProps> {
|
|
|
41
57
|
|
|
42
58
|
componentWillUnmount() {
|
|
43
59
|
if (canUseDOM) {
|
|
44
|
-
window.removeEventListener(
|
|
60
|
+
window.removeEventListener(
|
|
61
|
+
'keydown',
|
|
62
|
+
this.props.hasChecks || this.props.hasSelectableNodes ? this.handleKeysCheckbox : this.handleKeys
|
|
63
|
+
);
|
|
45
64
|
}
|
|
46
65
|
}
|
|
47
66
|
|
|
48
67
|
handleKeys = (event: KeyboardEvent) => {
|
|
49
|
-
if (this.treeRef.current
|
|
68
|
+
if (!this.treeRef.current.contains(event.target as HTMLElement)) {
|
|
50
69
|
return;
|
|
51
70
|
}
|
|
52
71
|
const activeElement = document.activeElement;
|
|
@@ -55,8 +74,8 @@ export class TreeViewRoot extends React.Component<TreeViewRootProps> {
|
|
|
55
74
|
el => !el.classList.contains('pf-m-disabled')
|
|
56
75
|
);
|
|
57
76
|
|
|
58
|
-
if (key ===
|
|
59
|
-
(
|
|
77
|
+
if (key === KeyTypes.Space) {
|
|
78
|
+
(activeElement as HTMLElement).click();
|
|
60
79
|
event.preventDefault();
|
|
61
80
|
}
|
|
62
81
|
|
|
@@ -109,14 +128,15 @@ export class TreeViewRoot extends React.Component<TreeViewRootProps> {
|
|
|
109
128
|
};
|
|
110
129
|
|
|
111
130
|
handleKeysCheckbox = (event: KeyboardEvent) => {
|
|
112
|
-
if (this.treeRef.current
|
|
131
|
+
if (!this.treeRef.current.contains(event.target as HTMLElement)) {
|
|
113
132
|
return;
|
|
114
133
|
}
|
|
134
|
+
|
|
115
135
|
const activeElement = document.activeElement;
|
|
116
136
|
const key = event.key;
|
|
117
137
|
|
|
118
|
-
if (key ===
|
|
119
|
-
(
|
|
138
|
+
if (key === KeyTypes.Space) {
|
|
139
|
+
(activeElement as HTMLElement).click();
|
|
120
140
|
event.preventDefault();
|
|
121
141
|
}
|
|
122
142
|
|
|
@@ -126,7 +146,7 @@ export class TreeViewRoot extends React.Component<TreeViewRootProps> {
|
|
|
126
146
|
event,
|
|
127
147
|
treeNodes as HTMLElement[],
|
|
128
148
|
(element: Element) => element.contains(activeElement),
|
|
129
|
-
(element: Element) => element.querySelector('
|
|
149
|
+
(element: Element) => element.querySelector('button,input'),
|
|
130
150
|
[],
|
|
131
151
|
undefined,
|
|
132
152
|
true,
|
|
@@ -168,7 +188,7 @@ export class TreeViewRoot extends React.Component<TreeViewRootProps> {
|
|
|
168
188
|
|
|
169
189
|
render() {
|
|
170
190
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
171
|
-
const { children, hasChecks, hasGuides, variant, className, ...props } = this.props;
|
|
191
|
+
const { children, hasChecks, hasGuides, variant, className, hasSelectableNodes, ...props } = this.props;
|
|
172
192
|
return (
|
|
173
193
|
<div
|
|
174
194
|
className={css(
|