@patternfly/react-core 5.0.0-alpha.37 → 5.0.0-alpha.39
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 +10 -0
- package/components/DataList/DataList.d.ts +2 -6
- package/components/DataList/DataList.d.ts.map +1 -1
- package/components/DataList/DataList.js +2 -2
- package/components/DataList/DataList.js.map +1 -1
- package/components/DataList/DataListItem.js +2 -2
- package/components/DataList/DataListItem.js.map +1 -1
- package/components/OverflowMenu/OverflowMenuDropdownItem.d.ts +4 -4
- package/components/OverflowMenu/OverflowMenuDropdownItem.d.ts.map +1 -1
- package/components/OverflowMenu/OverflowMenuDropdownItem.js +3 -3
- package/components/OverflowMenu/OverflowMenuDropdownItem.js.map +1 -1
- package/components/index.d.ts +0 -1
- package/components/index.d.ts.map +1 -1
- package/components/index.js +0 -1
- package/components/index.js.map +1 -1
- package/{components → deprecated/components}/OptionsMenu/OptionsMenu.d.ts +1 -1
- package/deprecated/components/OptionsMenu/OptionsMenu.d.ts.map +1 -0
- package/{dist/esm → deprecated}/components/OptionsMenu/OptionsMenu.js +3 -3
- package/deprecated/components/OptionsMenu/OptionsMenu.js.map +1 -0
- package/deprecated/components/OptionsMenu/OptionsMenuItem.d.ts.map +1 -0
- package/{components → deprecated/components}/OptionsMenu/OptionsMenuItem.js +1 -1
- package/deprecated/components/OptionsMenu/OptionsMenuItem.js.map +1 -0
- package/deprecated/components/OptionsMenu/OptionsMenuItemGroup.d.ts.map +1 -0
- package/{dist/esm → deprecated}/components/OptionsMenu/OptionsMenuItemGroup.js +1 -1
- package/deprecated/components/OptionsMenu/OptionsMenuItemGroup.js.map +1 -0
- package/{components → deprecated/components}/OptionsMenu/OptionsMenuSeparator.d.ts +1 -1
- package/deprecated/components/OptionsMenu/OptionsMenuSeparator.d.ts.map +1 -0
- package/{components → deprecated/components}/OptionsMenu/OptionsMenuSeparator.js +1 -1
- package/deprecated/components/OptionsMenu/OptionsMenuSeparator.js.map +1 -0
- package/deprecated/components/OptionsMenu/OptionsMenuToggle.d.ts.map +1 -0
- package/{components → deprecated/components}/OptionsMenu/OptionsMenuToggle.js +1 -1
- package/deprecated/components/OptionsMenu/OptionsMenuToggle.js.map +1 -0
- package/deprecated/components/OptionsMenu/OptionsMenuToggleWithText.d.ts.map +1 -0
- package/{dist/esm → deprecated}/components/OptionsMenu/OptionsMenuToggleWithText.js +2 -2
- package/deprecated/components/OptionsMenu/OptionsMenuToggleWithText.js.map +1 -0
- package/deprecated/components/OptionsMenu/index.d.ts.map +1 -0
- package/deprecated/components/OptionsMenu/index.js.map +1 -0
- package/deprecated/components/index.d.ts +1 -1
- package/deprecated/components/index.d.ts.map +1 -1
- package/deprecated/components/index.js +1 -1
- package/deprecated/components/index.js.map +1 -1
- package/dist/esm/components/DataList/DataList.d.ts +2 -6
- package/dist/esm/components/DataList/DataList.d.ts.map +1 -1
- package/dist/esm/components/DataList/DataList.js +2 -2
- package/dist/esm/components/DataList/DataList.js.map +1 -1
- package/dist/esm/components/DataList/DataListItem.js +2 -2
- package/dist/esm/components/DataList/DataListItem.js.map +1 -1
- package/dist/esm/components/OverflowMenu/OverflowMenuDropdownItem.d.ts +4 -4
- package/dist/esm/components/OverflowMenu/OverflowMenuDropdownItem.d.ts.map +1 -1
- package/dist/esm/components/OverflowMenu/OverflowMenuDropdownItem.js +3 -3
- package/dist/esm/components/OverflowMenu/OverflowMenuDropdownItem.js.map +1 -1
- package/dist/esm/components/index.d.ts +0 -1
- package/dist/esm/components/index.d.ts.map +1 -1
- package/dist/esm/components/index.js +0 -1
- package/dist/esm/components/index.js.map +1 -1
- package/dist/{js → esm/deprecated}/components/OptionsMenu/OptionsMenu.d.ts +1 -1
- package/dist/esm/deprecated/components/OptionsMenu/OptionsMenu.d.ts.map +1 -0
- package/{components → dist/esm/deprecated/components}/OptionsMenu/OptionsMenu.js +3 -3
- package/dist/esm/deprecated/components/OptionsMenu/OptionsMenu.js.map +1 -0
- package/dist/esm/deprecated/components/OptionsMenu/OptionsMenuItem.d.ts.map +1 -0
- package/dist/esm/{components → deprecated/components}/OptionsMenu/OptionsMenuItem.js +1 -1
- package/dist/esm/deprecated/components/OptionsMenu/OptionsMenuItem.js.map +1 -0
- package/dist/esm/deprecated/components/OptionsMenu/OptionsMenuItemGroup.d.ts.map +1 -0
- package/{components → dist/esm/deprecated/components}/OptionsMenu/OptionsMenuItemGroup.js +1 -1
- package/dist/esm/deprecated/components/OptionsMenu/OptionsMenuItemGroup.js.map +1 -0
- package/dist/{js → esm/deprecated}/components/OptionsMenu/OptionsMenuSeparator.d.ts +1 -1
- package/dist/esm/deprecated/components/OptionsMenu/OptionsMenuSeparator.d.ts.map +1 -0
- package/dist/esm/{components → deprecated/components}/OptionsMenu/OptionsMenuSeparator.js +1 -1
- package/dist/esm/deprecated/components/OptionsMenu/OptionsMenuSeparator.js.map +1 -0
- package/dist/esm/deprecated/components/OptionsMenu/OptionsMenuToggle.d.ts.map +1 -0
- package/dist/esm/{components → deprecated/components}/OptionsMenu/OptionsMenuToggle.js +1 -1
- package/dist/esm/deprecated/components/OptionsMenu/OptionsMenuToggle.js.map +1 -0
- package/dist/esm/deprecated/components/OptionsMenu/OptionsMenuToggleWithText.d.ts.map +1 -0
- package/{components → dist/esm/deprecated/components}/OptionsMenu/OptionsMenuToggleWithText.js +2 -2
- package/dist/esm/deprecated/components/OptionsMenu/OptionsMenuToggleWithText.js.map +1 -0
- package/dist/esm/deprecated/components/OptionsMenu/index.d.ts.map +1 -0
- package/dist/esm/deprecated/components/OptionsMenu/index.js.map +1 -0
- package/dist/esm/deprecated/components/index.d.ts +1 -1
- package/dist/esm/deprecated/components/index.d.ts.map +1 -1
- package/dist/esm/deprecated/components/index.js +1 -1
- package/dist/esm/deprecated/components/index.js.map +1 -1
- package/dist/js/components/DataList/DataList.d.ts +2 -6
- package/dist/js/components/DataList/DataList.d.ts.map +1 -1
- package/dist/js/components/DataList/DataList.js +2 -2
- package/dist/js/components/DataList/DataList.js.map +1 -1
- package/dist/js/components/DataList/DataListItem.js +2 -2
- package/dist/js/components/DataList/DataListItem.js.map +1 -1
- package/dist/js/components/OverflowMenu/OverflowMenuDropdownItem.d.ts +4 -4
- package/dist/js/components/OverflowMenu/OverflowMenuDropdownItem.d.ts.map +1 -1
- package/dist/js/components/OverflowMenu/OverflowMenuDropdownItem.js +3 -3
- package/dist/js/components/OverflowMenu/OverflowMenuDropdownItem.js.map +1 -1
- package/dist/js/components/index.d.ts +0 -1
- package/dist/js/components/index.d.ts.map +1 -1
- package/dist/js/components/index.js +0 -1
- package/dist/js/components/index.js.map +1 -1
- package/dist/{esm → js/deprecated}/components/OptionsMenu/OptionsMenu.d.ts +1 -1
- package/dist/js/deprecated/components/OptionsMenu/OptionsMenu.d.ts.map +1 -0
- package/dist/js/{components → deprecated/components}/OptionsMenu/OptionsMenu.js +3 -3
- package/dist/js/deprecated/components/OptionsMenu/OptionsMenu.js.map +1 -0
- package/dist/js/deprecated/components/OptionsMenu/OptionsMenuItem.d.ts.map +1 -0
- package/dist/js/{components → deprecated/components}/OptionsMenu/OptionsMenuItem.js +1 -1
- package/dist/js/deprecated/components/OptionsMenu/OptionsMenuItem.js.map +1 -0
- package/dist/js/deprecated/components/OptionsMenu/OptionsMenuItemGroup.d.ts.map +1 -0
- package/dist/js/{components → deprecated/components}/OptionsMenu/OptionsMenuItemGroup.js +1 -1
- package/dist/js/deprecated/components/OptionsMenu/OptionsMenuItemGroup.js.map +1 -0
- package/dist/{esm → js/deprecated}/components/OptionsMenu/OptionsMenuSeparator.d.ts +1 -1
- package/dist/js/deprecated/components/OptionsMenu/OptionsMenuSeparator.d.ts.map +1 -0
- package/dist/js/{components → deprecated/components}/OptionsMenu/OptionsMenuSeparator.js +1 -1
- package/dist/js/deprecated/components/OptionsMenu/OptionsMenuSeparator.js.map +1 -0
- package/dist/js/deprecated/components/OptionsMenu/OptionsMenuToggle.d.ts.map +1 -0
- package/dist/js/{components → deprecated/components}/OptionsMenu/OptionsMenuToggle.js +1 -1
- package/dist/js/deprecated/components/OptionsMenu/OptionsMenuToggle.js.map +1 -0
- package/dist/js/deprecated/components/OptionsMenu/OptionsMenuToggleWithText.d.ts.map +1 -0
- package/dist/js/{components → deprecated/components}/OptionsMenu/OptionsMenuToggleWithText.js +2 -2
- package/dist/js/deprecated/components/OptionsMenu/OptionsMenuToggleWithText.js.map +1 -0
- package/dist/js/deprecated/components/OptionsMenu/index.d.ts.map +1 -0
- package/dist/js/deprecated/components/OptionsMenu/index.js.map +1 -0
- package/dist/js/deprecated/components/index.d.ts +1 -1
- package/dist/js/deprecated/components/index.d.ts.map +1 -1
- package/dist/js/deprecated/components/index.js +1 -1
- package/dist/js/deprecated/components/index.js.map +1 -1
- package/dist/umd/react-core.min.js +4 -4
- package/package.json +2 -2
- package/src/components/DataList/DataList.tsx +4 -9
- package/src/components/DataList/DataListItem.tsx +3 -3
- package/src/components/DataList/__tests__/DataList.test.tsx +6 -6
- package/src/components/DataList/examples/DataList.md +0 -1
- package/src/components/DataList/examples/DataListSelectableRows.tsx +1 -1
- package/src/components/OverflowMenu/OverflowMenuDropdownItem.tsx +6 -6
- package/src/components/OverflowMenu/__tests__/Generated/OverflowMenuDropdownItem.test.tsx +1 -4
- package/src/components/OverflowMenu/__tests__/Generated/__snapshots__/OverflowMenuDropdownItem.test.tsx.snap +14 -6
- package/src/components/OverflowMenu/examples/OverflowMenu.md +146 -73
- package/src/components/OverflowMenu/examples/OverflowMenuBreakpointOnContainer.tsx +26 -16
- package/src/components/Toolbar/examples/Toolbar.md +2 -0
- package/src/components/Toolbar/examples/ToolbarStacked.tsx +34 -25
- package/src/components/index.ts +0 -1
- package/src/demos/Card/Card.md +30 -16
- package/src/demos/Tabs.md +3 -0
- package/src/demos/examples/Tabs/TabsAndTable.tsx +23 -14
- package/src/{components → deprecated/components}/OptionsMenu/OptionsMenu.tsx +3 -3
- package/src/{components → deprecated/components}/OptionsMenu/OptionsMenuItem.tsx +1 -1
- package/src/{components → deprecated/components}/OptionsMenu/OptionsMenuItemGroup.tsx +1 -1
- package/src/{components → deprecated/components}/OptionsMenu/OptionsMenuSeparator.tsx +1 -1
- package/src/{components → deprecated/components}/OptionsMenu/OptionsMenuToggle.tsx +1 -1
- package/src/{components → deprecated/components}/OptionsMenu/OptionsMenuToggleWithText.tsx +2 -2
- package/src/{components → deprecated/components}/OptionsMenu/__tests__/Generated/OptionsMenuItem.test.tsx +1 -1
- package/src/{components → deprecated/components}/OptionsMenu/examples/OptionsMenu.md +10 -10
- package/src/deprecated/components/index.ts +1 -1
- package/components/OptionsMenu/OptionsMenu.d.ts.map +0 -1
- package/components/OptionsMenu/OptionsMenu.js.map +0 -1
- package/components/OptionsMenu/OptionsMenuItem.d.ts.map +0 -1
- package/components/OptionsMenu/OptionsMenuItem.js.map +0 -1
- package/components/OptionsMenu/OptionsMenuItemGroup.d.ts.map +0 -1
- package/components/OptionsMenu/OptionsMenuItemGroup.js.map +0 -1
- package/components/OptionsMenu/OptionsMenuSeparator.d.ts.map +0 -1
- package/components/OptionsMenu/OptionsMenuSeparator.js.map +0 -1
- package/components/OptionsMenu/OptionsMenuToggle.d.ts.map +0 -1
- package/components/OptionsMenu/OptionsMenuToggle.js.map +0 -1
- package/components/OptionsMenu/OptionsMenuToggleWithText.d.ts.map +0 -1
- package/components/OptionsMenu/OptionsMenuToggleWithText.js.map +0 -1
- package/components/OptionsMenu/index.d.ts.map +0 -1
- package/components/OptionsMenu/index.js.map +0 -1
- package/dist/esm/components/OptionsMenu/OptionsMenu.d.ts.map +0 -1
- package/dist/esm/components/OptionsMenu/OptionsMenu.js.map +0 -1
- package/dist/esm/components/OptionsMenu/OptionsMenuItem.d.ts.map +0 -1
- package/dist/esm/components/OptionsMenu/OptionsMenuItem.js.map +0 -1
- package/dist/esm/components/OptionsMenu/OptionsMenuItemGroup.d.ts.map +0 -1
- package/dist/esm/components/OptionsMenu/OptionsMenuItemGroup.js.map +0 -1
- package/dist/esm/components/OptionsMenu/OptionsMenuSeparator.d.ts.map +0 -1
- package/dist/esm/components/OptionsMenu/OptionsMenuSeparator.js.map +0 -1
- package/dist/esm/components/OptionsMenu/OptionsMenuToggle.d.ts.map +0 -1
- package/dist/esm/components/OptionsMenu/OptionsMenuToggle.js.map +0 -1
- package/dist/esm/components/OptionsMenu/OptionsMenuToggleWithText.d.ts.map +0 -1
- package/dist/esm/components/OptionsMenu/OptionsMenuToggleWithText.js.map +0 -1
- package/dist/esm/components/OptionsMenu/index.d.ts.map +0 -1
- package/dist/esm/components/OptionsMenu/index.js.map +0 -1
- package/dist/js/components/OptionsMenu/OptionsMenu.d.ts.map +0 -1
- package/dist/js/components/OptionsMenu/OptionsMenu.js.map +0 -1
- package/dist/js/components/OptionsMenu/OptionsMenuItem.d.ts.map +0 -1
- package/dist/js/components/OptionsMenu/OptionsMenuItem.js.map +0 -1
- package/dist/js/components/OptionsMenu/OptionsMenuItemGroup.d.ts.map +0 -1
- package/dist/js/components/OptionsMenu/OptionsMenuItemGroup.js.map +0 -1
- package/dist/js/components/OptionsMenu/OptionsMenuSeparator.d.ts.map +0 -1
- package/dist/js/components/OptionsMenu/OptionsMenuSeparator.js.map +0 -1
- package/dist/js/components/OptionsMenu/OptionsMenuToggle.d.ts.map +0 -1
- package/dist/js/components/OptionsMenu/OptionsMenuToggle.js.map +0 -1
- package/dist/js/components/OptionsMenu/OptionsMenuToggleWithText.d.ts.map +0 -1
- package/dist/js/components/OptionsMenu/OptionsMenuToggleWithText.js.map +0 -1
- package/dist/js/components/OptionsMenu/index.d.ts.map +0 -1
- package/dist/js/components/OptionsMenu/index.js.map +0 -1
- /package/{components → deprecated/components}/OptionsMenu/OptionsMenuItem.d.ts +0 -0
- /package/{components → deprecated/components}/OptionsMenu/OptionsMenuItemGroup.d.ts +0 -0
- /package/{components → deprecated/components}/OptionsMenu/OptionsMenuToggle.d.ts +0 -0
- /package/{components → deprecated/components}/OptionsMenu/OptionsMenuToggleWithText.d.ts +0 -0
- /package/{components → deprecated/components}/OptionsMenu/index.d.ts +0 -0
- /package/{components → deprecated/components}/OptionsMenu/index.js +0 -0
- /package/dist/esm/{components → deprecated/components}/OptionsMenu/OptionsMenuItem.d.ts +0 -0
- /package/dist/esm/{components → deprecated/components}/OptionsMenu/OptionsMenuItemGroup.d.ts +0 -0
- /package/dist/esm/{components → deprecated/components}/OptionsMenu/OptionsMenuToggle.d.ts +0 -0
- /package/dist/esm/{components → deprecated/components}/OptionsMenu/OptionsMenuToggleWithText.d.ts +0 -0
- /package/dist/esm/{components → deprecated/components}/OptionsMenu/index.d.ts +0 -0
- /package/dist/esm/{components → deprecated/components}/OptionsMenu/index.js +0 -0
- /package/dist/js/{components → deprecated/components}/OptionsMenu/OptionsMenuItem.d.ts +0 -0
- /package/dist/js/{components → deprecated/components}/OptionsMenu/OptionsMenuItemGroup.d.ts +0 -0
- /package/dist/js/{components → deprecated/components}/OptionsMenu/OptionsMenuToggle.d.ts +0 -0
- /package/dist/js/{components → deprecated/components}/OptionsMenu/OptionsMenuToggleWithText.d.ts +0 -0
- /package/dist/js/{components → deprecated/components}/OptionsMenu/index.d.ts +0 -0
- /package/dist/js/{components → deprecated/components}/OptionsMenu/index.js +0 -0
- /package/src/{components → deprecated/components}/OptionsMenu/__tests__/Generated/OptionsMenuItemGroup.test.tsx +0 -0
- /package/src/{components → deprecated/components}/OptionsMenu/__tests__/Generated/OptionsMenuSeparator.test.tsx +0 -0
- /package/src/{components → deprecated/components}/OptionsMenu/__tests__/Generated/OptionsMenuToggle.test.tsx +0 -0
- /package/src/{components → deprecated/components}/OptionsMenu/__tests__/Generated/OptionsMenuToggleWithText.test.tsx +0 -0
- /package/src/{components → deprecated/components}/OptionsMenu/__tests__/Generated/__snapshots__/OptionsMenuItem.test.tsx.snap +0 -0
- /package/src/{components → deprecated/components}/OptionsMenu/__tests__/Generated/__snapshots__/OptionsMenuItemGroup.test.tsx.snap +0 -0
- /package/src/{components → deprecated/components}/OptionsMenu/__tests__/Generated/__snapshots__/OptionsMenuSeparator.test.tsx.snap +0 -0
- /package/src/{components → deprecated/components}/OptionsMenu/__tests__/Generated/__snapshots__/OptionsMenuToggle.test.tsx.snap +0 -0
- /package/src/{components → deprecated/components}/OptionsMenu/__tests__/Generated/__snapshots__/OptionsMenuToggleWithText.test.tsx.snap +0 -0
- /package/src/{components → deprecated/components}/OptionsMenu/__tests__/OptionsMenu.test.tsx +0 -0
- /package/src/{components → deprecated/components}/OptionsMenu/__tests__/__snapshots__/OptionsMenu.test.tsx.snap +0 -0
- /package/src/{components → deprecated/components}/OptionsMenu/index.ts +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@patternfly/react-core",
|
|
3
|
-
"version": "5.0.0-alpha.
|
|
3
|
+
"version": "5.0.0-alpha.39",
|
|
4
4
|
"description": "This library provides a set of common React components for use with the PatternFly reference implementation.",
|
|
5
5
|
"main": "dist/js/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -70,5 +70,5 @@
|
|
|
70
70
|
"react": "^17 || ^18",
|
|
71
71
|
"react-dom": "^17 || ^18"
|
|
72
72
|
},
|
|
73
|
-
"gitHead": "
|
|
73
|
+
"gitHead": "628b8d06a7a1438eb2f6908ff559fe90ac9e973a"
|
|
74
74
|
}
|
|
@@ -20,11 +20,6 @@ export enum DataListWrapModifier {
|
|
|
20
20
|
breakWord = 'breakWord'
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
export interface SelectableRowObject {
|
|
24
|
-
/** Callback that executes when the screen reader accessible element receives a change event */
|
|
25
|
-
onChange: (event: React.FormEvent<HTMLInputElement>, id: string) => void;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
23
|
export interface DataListProps extends Omit<React.HTMLProps<HTMLUListElement>, 'ref'> {
|
|
29
24
|
/** Content rendered inside the DataList list */
|
|
30
25
|
children?: React.ReactNode;
|
|
@@ -43,14 +38,14 @@ export interface DataListProps extends Omit<React.HTMLProps<HTMLUListElement>, '
|
|
|
43
38
|
/** Determines which wrapping modifier to apply to the DataList */
|
|
44
39
|
wrapModifier?: DataListWrapModifier | 'nowrap' | 'truncate' | 'breakWord';
|
|
45
40
|
/** Object that causes the data list to render hidden inputs which improve selectable item a11y */
|
|
46
|
-
|
|
41
|
+
onSelectableRowChange?: (event: React.FormEvent<HTMLInputElement>, id: string) => void;
|
|
47
42
|
}
|
|
48
43
|
|
|
49
44
|
interface DataListContextProps {
|
|
50
45
|
isSelectable: boolean;
|
|
51
46
|
selectedDataListItemId: string;
|
|
52
47
|
updateSelectedDataListItem: (event: React.MouseEvent | React.KeyboardEvent, id: string) => void;
|
|
53
|
-
|
|
48
|
+
onSelectableRowChange?: (event: React.FormEvent<HTMLInputElement>, id: string) => void;
|
|
54
49
|
}
|
|
55
50
|
|
|
56
51
|
export const DataListContext = React.createContext<Partial<DataListContextProps>>({
|
|
@@ -84,7 +79,7 @@ export class DataList extends React.Component<DataListProps> {
|
|
|
84
79
|
isCompact,
|
|
85
80
|
wrapModifier,
|
|
86
81
|
gridBreakpoint,
|
|
87
|
-
|
|
82
|
+
onSelectableRowChange,
|
|
88
83
|
...props
|
|
89
84
|
} = this.props;
|
|
90
85
|
const isSelectable = onSelectDataListItem !== undefined;
|
|
@@ -99,7 +94,7 @@ export class DataList extends React.Component<DataListProps> {
|
|
|
99
94
|
isSelectable,
|
|
100
95
|
selectedDataListItemId,
|
|
101
96
|
updateSelectedDataListItem,
|
|
102
|
-
|
|
97
|
+
onSelectableRowChange
|
|
103
98
|
}}
|
|
104
99
|
>
|
|
105
100
|
<ul
|
|
@@ -45,7 +45,7 @@ export class DataListItem extends React.Component<DataListItemProps> {
|
|
|
45
45
|
} = this.props;
|
|
46
46
|
return (
|
|
47
47
|
<DataListContext.Consumer>
|
|
48
|
-
{({ isSelectable, selectedDataListItemId, updateSelectedDataListItem,
|
|
48
|
+
{({ isSelectable, selectedDataListItemId, updateSelectedDataListItem, onSelectableRowChange }) => {
|
|
49
49
|
const selectDataListItem = (event: React.MouseEvent) => {
|
|
50
50
|
let target: any = event.target;
|
|
51
51
|
while (event.currentTarget !== target) {
|
|
@@ -91,12 +91,12 @@ export class DataListItem extends React.Component<DataListItemProps> {
|
|
|
91
91
|
{...(isSelectable && isSelected && { 'aria-selected': true })}
|
|
92
92
|
{...props}
|
|
93
93
|
>
|
|
94
|
-
{
|
|
94
|
+
{onSelectableRowChange && (
|
|
95
95
|
<input
|
|
96
96
|
className="pf-screen-reader"
|
|
97
97
|
type="radio"
|
|
98
98
|
checked={isSelected}
|
|
99
|
-
onChange={(event) =>
|
|
99
|
+
onChange={(event) => onSelectableRowChange(event, id)}
|
|
100
100
|
tabIndex={-1}
|
|
101
101
|
{...selectableInputAriaProps}
|
|
102
102
|
/>
|
|
@@ -50,7 +50,7 @@ describe('DataList', () => {
|
|
|
50
50
|
|
|
51
51
|
test('List renders with a hidden input to improve a11y when selectableRow is passed', () => {
|
|
52
52
|
render(
|
|
53
|
-
<DataList aria-label="this is a simple list"
|
|
53
|
+
<DataList aria-label="this is a simple list" onSelectableRowChange={ () => {} }>
|
|
54
54
|
<DataListItem>
|
|
55
55
|
<DataListItemRow aria-labelledby="test-id">
|
|
56
56
|
<p id="test-id">Test</p>
|
|
@@ -85,7 +85,7 @@ describe('DataList', () => {
|
|
|
85
85
|
const user = userEvent.setup();
|
|
86
86
|
|
|
87
87
|
render(
|
|
88
|
-
<DataList aria-label="this is a simple list"
|
|
88
|
+
<DataList aria-label="this is a simple list" onSelectableRowChange={ mock } selectedDataListItemId=''>
|
|
89
89
|
<DataListItem id='item-test-id'>
|
|
90
90
|
<DataListItemRow aria-labelledby="test-id">
|
|
91
91
|
<p id="test-id">Test</p>
|
|
@@ -104,7 +104,7 @@ describe('DataList', () => {
|
|
|
104
104
|
const mock = jest.fn();
|
|
105
105
|
|
|
106
106
|
render(
|
|
107
|
-
<DataList aria-label="this is a simple list"
|
|
107
|
+
<DataList aria-label="this is a simple list" onSelectableRowChange={ mock } selectedDataListItemId=''>
|
|
108
108
|
<DataListItem id='item-test-id'>
|
|
109
109
|
<DataListItemRow aria-labelledby="test-id">
|
|
110
110
|
<p id="test-id">Test</p>
|
|
@@ -118,7 +118,7 @@ describe('DataList', () => {
|
|
|
118
118
|
|
|
119
119
|
test('Item applies selectableInputAriaLabel to the hidden input', () => {
|
|
120
120
|
render(
|
|
121
|
-
<DataList aria-label="this is a simple list"
|
|
121
|
+
<DataList aria-label="this is a simple list" onSelectableRowChange={ () => {} }>
|
|
122
122
|
<DataListItem selectableInputAriaLabel="Data list item label test">
|
|
123
123
|
<DataListItemRow aria-labelledby="test-id">
|
|
124
124
|
<p id="test-id">Test</p>
|
|
@@ -134,7 +134,7 @@ describe('DataList', () => {
|
|
|
134
134
|
|
|
135
135
|
test('Item defaults to labelling its input using its aria-labelledby prop', () => {
|
|
136
136
|
render(
|
|
137
|
-
<DataList aria-label="this is a simple list"
|
|
137
|
+
<DataList aria-label="this is a simple list" onSelectableRowChange={ () => {} }>
|
|
138
138
|
<DataListItem aria-labelledby="test-id">
|
|
139
139
|
<p id="test-id">Test cell content</p>
|
|
140
140
|
</DataListItem>
|
|
@@ -148,7 +148,7 @@ describe('DataList', () => {
|
|
|
148
148
|
|
|
149
149
|
test('Item prioritizes selectableInputAriaLabel over aria-labelledby prop', () => {
|
|
150
150
|
render(
|
|
151
|
-
<DataList aria-label="this is a simple list"
|
|
151
|
+
<DataList aria-label="this is a simple list" onSelectableRowChange={ () => {} }>
|
|
152
152
|
<DataListItem aria-labelledby="test-id" selectableInputAriaLabel="Data list item label test">
|
|
153
153
|
<p id="test-id">Test cell content</p>
|
|
154
154
|
</DataListItem>
|
|
@@ -47,7 +47,7 @@ export const DataListSelectableRows: React.FunctionComponent = () => {
|
|
|
47
47
|
aria-label="selectable data list example"
|
|
48
48
|
selectedDataListItemId={selectedDataListItemId}
|
|
49
49
|
onSelectDataListItem={onSelectDataListItem}
|
|
50
|
-
|
|
50
|
+
onSelectableRowChange={handleInputChange}
|
|
51
51
|
>
|
|
52
52
|
<DataListItem aria-labelledby="selectable-action-item1" id="item1">
|
|
53
53
|
<DataListItemRow>
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { DropdownItem, DropdownItemProps } from '
|
|
2
|
+
import { DropdownItem, DropdownItemProps } from '../../next/components/Dropdown';
|
|
3
3
|
import { OverflowMenuContext } from './OverflowMenuContext';
|
|
4
4
|
|
|
5
|
-
export interface OverflowMenuDropdownItemProps extends DropdownItemProps {
|
|
5
|
+
export interface OverflowMenuDropdownItemProps extends Omit<DropdownItemProps, 'ref'> {
|
|
6
6
|
/** Indicates when a dropdown item shows and hides the corresponding list item */
|
|
7
7
|
isShared?: boolean;
|
|
8
|
-
/**
|
|
9
|
-
|
|
8
|
+
/** Identifies the component in the dropdown onSelect callback */
|
|
9
|
+
itemId?: string | number;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
export const OverflowMenuDropdownItem: React.FunctionComponent<OverflowMenuDropdownItemProps> = ({
|
|
13
13
|
children,
|
|
14
14
|
isShared = false,
|
|
15
|
-
|
|
15
|
+
itemId,
|
|
16
16
|
...additionalProps
|
|
17
17
|
}: OverflowMenuDropdownItemProps) => (
|
|
18
18
|
<OverflowMenuContext.Consumer>
|
|
19
19
|
{value =>
|
|
20
20
|
(!isShared || value.isBelowBreakpoint) && (
|
|
21
|
-
<DropdownItem component="button"
|
|
21
|
+
<DropdownItem component="button" itemId={itemId} {...additionalProps}>
|
|
22
22
|
{children}
|
|
23
23
|
</DropdownItem>
|
|
24
24
|
)
|
|
@@ -3,14 +3,11 @@ import React from 'react';
|
|
|
3
3
|
import { render } from '@testing-library/react';
|
|
4
4
|
|
|
5
5
|
import { OverflowMenuDropdownItem } from '../../OverflowMenuDropdownItem';
|
|
6
|
-
import { DropdownArrowContext } from '../../../Dropdown';
|
|
7
6
|
|
|
8
7
|
describe('OverflowMenuDropdownItem', () => {
|
|
9
8
|
it('should match snapshot', () => {
|
|
10
9
|
const { asFragment } = render(
|
|
11
|
-
|
|
12
|
-
<OverflowMenuDropdownItem children={'any'} isShared={false} />
|
|
13
|
-
</DropdownArrowContext.Provider>
|
|
10
|
+
<OverflowMenuDropdownItem itemId="id" children={'any'} isShared={false} />
|
|
14
11
|
);
|
|
15
12
|
expect(asFragment()).toMatchSnapshot();
|
|
16
13
|
});
|
|
@@ -3,19 +3,27 @@
|
|
|
3
3
|
exports[`OverflowMenuDropdownItem should match snapshot 1`] = `
|
|
4
4
|
<DocumentFragment>
|
|
5
5
|
<li
|
|
6
|
+
class="pf-c-menu__list-item"
|
|
7
|
+
data-ouia-component-id="OUIA-Generated-DropdownItem-1"
|
|
8
|
+
data-ouia-component-type="PF4/DropdownItem"
|
|
9
|
+
data-ouia-safe="true"
|
|
6
10
|
role="none"
|
|
7
11
|
>
|
|
8
12
|
<button
|
|
9
|
-
|
|
10
|
-
class=""
|
|
11
|
-
data-ouia-component-id="OUIA-Generated-DropdownItem-1"
|
|
12
|
-
data-ouia-component-type="PF4/DropdownItem"
|
|
13
|
-
data-ouia-safe="true"
|
|
13
|
+
class="pf-c-menu__item"
|
|
14
14
|
role="menuitem"
|
|
15
15
|
tabindex="-1"
|
|
16
16
|
type="button"
|
|
17
17
|
>
|
|
18
|
-
|
|
18
|
+
<span
|
|
19
|
+
class="pf-c-menu__item-main"
|
|
20
|
+
>
|
|
21
|
+
<span
|
|
22
|
+
class="pf-c-menu__item-text"
|
|
23
|
+
>
|
|
24
|
+
any
|
|
25
|
+
</span>
|
|
26
|
+
</span>
|
|
19
27
|
</button>
|
|
20
28
|
</li>
|
|
21
29
|
</DocumentFragment>
|
|
@@ -9,13 +9,15 @@ propComponents:
|
|
|
9
9
|
'OverflowMenuControl',
|
|
10
10
|
'OverflowMenuDropdownItem',
|
|
11
11
|
'OverflowMenuGroup',
|
|
12
|
-
'OverflowMenuItem'
|
|
12
|
+
'OverflowMenuItem'
|
|
13
13
|
]
|
|
14
14
|
---
|
|
15
15
|
|
|
16
16
|
import AlignLeftIcon from '@patternfly/react-icons/dist/esm/icons/align-left-icon';
|
|
17
17
|
import AlignCenterIcon from '@patternfly/react-icons/dist/esm/icons/align-center-icon';
|
|
18
18
|
import AlignRightIcon from '@patternfly/react-icons/dist/esm/icons/align-right-icon';
|
|
19
|
+
import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
|
|
20
|
+
import { Dropdown as DropdownNext, DropdownList } from '@patternfly/react-core/next';
|
|
19
21
|
|
|
20
22
|
## Examples
|
|
21
23
|
|
|
@@ -29,9 +31,11 @@ import {
|
|
|
29
31
|
OverflowMenuContent,
|
|
30
32
|
OverflowMenuGroup,
|
|
31
33
|
OverflowMenuItem,
|
|
32
|
-
OverflowMenuDropdownItem
|
|
34
|
+
OverflowMenuDropdownItem,
|
|
35
|
+
MenuToggle
|
|
33
36
|
} from '@patternfly/react-core';
|
|
34
|
-
import { Dropdown,
|
|
37
|
+
import { Dropdown as DropdownNext, DropdownList } from '@patternfly/react-core/next';
|
|
38
|
+
import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
|
|
35
39
|
|
|
36
40
|
class SimpleOverflowMenu extends React.Component {
|
|
37
41
|
constructor(props) {
|
|
@@ -39,12 +43,12 @@ class SimpleOverflowMenu extends React.Component {
|
|
|
39
43
|
this.state = {
|
|
40
44
|
isOpen: false
|
|
41
45
|
};
|
|
42
|
-
this.onToggle = (
|
|
46
|
+
this.onToggle = () => {
|
|
43
47
|
this.setState({
|
|
44
|
-
isOpen
|
|
48
|
+
isOpen: !this.state.isOpen
|
|
45
49
|
});
|
|
46
50
|
};
|
|
47
|
-
this.onSelect = event => {
|
|
51
|
+
this.onSelect = (event) => {
|
|
48
52
|
this.setState({
|
|
49
53
|
isOpen: !this.state.isOpen
|
|
50
54
|
});
|
|
@@ -54,19 +58,19 @@ class SimpleOverflowMenu extends React.Component {
|
|
|
54
58
|
render() {
|
|
55
59
|
const { isOpen } = this.state;
|
|
56
60
|
const dropdownItems = [
|
|
57
|
-
<OverflowMenuDropdownItem key="item1" isShared>
|
|
61
|
+
<OverflowMenuDropdownItem itemId={0} key="item1" isShared>
|
|
58
62
|
Item 1
|
|
59
63
|
</OverflowMenuDropdownItem>,
|
|
60
|
-
<OverflowMenuDropdownItem key="item2" isShared>
|
|
64
|
+
<OverflowMenuDropdownItem itemId={1} key="item2" isShared>
|
|
61
65
|
Item 2
|
|
62
66
|
</OverflowMenuDropdownItem>,
|
|
63
|
-
<OverflowMenuDropdownItem key="item3" isShared>
|
|
67
|
+
<OverflowMenuDropdownItem itemId={2} key="item3" isShared>
|
|
64
68
|
Item 3
|
|
65
69
|
</OverflowMenuDropdownItem>,
|
|
66
|
-
<OverflowMenuDropdownItem key="item4" isShared>
|
|
70
|
+
<OverflowMenuDropdownItem itemId={3} key="item4" isShared>
|
|
67
71
|
Item 4
|
|
68
72
|
</OverflowMenuDropdownItem>,
|
|
69
|
-
<OverflowMenuDropdownItem key="item5" isShared>
|
|
73
|
+
<OverflowMenuDropdownItem itemId={5} key="item5" isShared>
|
|
70
74
|
Item 5
|
|
71
75
|
</OverflowMenuDropdownItem>
|
|
72
76
|
];
|
|
@@ -82,15 +86,28 @@ class SimpleOverflowMenu extends React.Component {
|
|
|
82
86
|
</OverflowMenuGroup>
|
|
83
87
|
</OverflowMenuContent>
|
|
84
88
|
<OverflowMenuControl>
|
|
85
|
-
<
|
|
89
|
+
<DropdownNext
|
|
86
90
|
onSelect={this.onSelect}
|
|
87
|
-
toggle={
|
|
91
|
+
toggle={(toggleRef) => (
|
|
92
|
+
<MenuToggle
|
|
93
|
+
ref={toggleRef}
|
|
94
|
+
aria-label="Simple example overflow menu"
|
|
95
|
+
variant="plain"
|
|
96
|
+
onClick={this.onToggle}
|
|
97
|
+
isExpanded={isOpen}
|
|
98
|
+
>
|
|
99
|
+
<EllipsisVIcon />
|
|
100
|
+
</MenuToggle>
|
|
101
|
+
)}
|
|
88
102
|
isOpen={isOpen}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
103
|
+
onOpenChange={(isOpen) =>
|
|
104
|
+
this.setState({
|
|
105
|
+
isOpen
|
|
106
|
+
})
|
|
107
|
+
}
|
|
108
|
+
>
|
|
109
|
+
<DropdownList>{dropdownItems}</DropdownList>
|
|
110
|
+
</DropdownNext>
|
|
94
111
|
</OverflowMenuControl>
|
|
95
112
|
</OverflowMenu>
|
|
96
113
|
);
|
|
@@ -108,9 +125,13 @@ import {
|
|
|
108
125
|
OverflowMenuContent,
|
|
109
126
|
OverflowMenuGroup,
|
|
110
127
|
OverflowMenuItem,
|
|
111
|
-
OverflowMenuDropdownItem
|
|
128
|
+
OverflowMenuDropdownItem,
|
|
129
|
+
MenuToggle,
|
|
130
|
+
Button,
|
|
131
|
+
ButtonVariant
|
|
112
132
|
} from '@patternfly/react-core';
|
|
113
|
-
import { Dropdown
|
|
133
|
+
import { Dropdown as DropdownNext, DropdownList } from '@patternfly/react-core/next';
|
|
134
|
+
import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
|
|
114
135
|
import AlignLeftIcon from '@patternfly/react-icons/dist/esm/icons/align-left-icon';
|
|
115
136
|
import AlignCenterIcon from '@patternfly/react-icons/dist/esm/icons/align-center-icon';
|
|
116
137
|
import AlignRightIcon from '@patternfly/react-icons/dist/esm/icons/align-right-icon';
|
|
@@ -121,12 +142,12 @@ class OverflowMenuGroupTypes extends React.Component {
|
|
|
121
142
|
this.state = {
|
|
122
143
|
isOpen: false
|
|
123
144
|
};
|
|
124
|
-
this.onToggle = (
|
|
145
|
+
this.onToggle = () => {
|
|
125
146
|
this.setState({
|
|
126
|
-
isOpen
|
|
147
|
+
isOpen: !this.state.isOpen
|
|
127
148
|
});
|
|
128
149
|
};
|
|
129
|
-
this.onSelect = event => {
|
|
150
|
+
this.onSelect = (event) => {
|
|
130
151
|
this.setState({
|
|
131
152
|
isOpen: !this.state.isOpen
|
|
132
153
|
});
|
|
@@ -136,31 +157,31 @@ class OverflowMenuGroupTypes extends React.Component {
|
|
|
136
157
|
render() {
|
|
137
158
|
const { isOpen } = this.state;
|
|
138
159
|
const dropdownItems = [
|
|
139
|
-
<OverflowMenuDropdownItem key="item1" isShared>
|
|
160
|
+
<OverflowMenuDropdownItem itemId={0} key="item1" isShared>
|
|
140
161
|
Item 1
|
|
141
162
|
</OverflowMenuDropdownItem>,
|
|
142
|
-
<OverflowMenuDropdownItem key="item2" isShared>
|
|
163
|
+
<OverflowMenuDropdownItem itemId={1} key="item2" isShared>
|
|
143
164
|
Item 2
|
|
144
165
|
</OverflowMenuDropdownItem>,
|
|
145
|
-
<OverflowMenuDropdownItem key="item3" isShared>
|
|
166
|
+
<OverflowMenuDropdownItem itemId={2} key="item3" isShared>
|
|
146
167
|
Item 3
|
|
147
168
|
</OverflowMenuDropdownItem>,
|
|
148
|
-
<OverflowMenuDropdownItem key="primary" isShared>
|
|
169
|
+
<OverflowMenuDropdownItem itemId={3} key="primary" isShared>
|
|
149
170
|
Primary
|
|
150
171
|
</OverflowMenuDropdownItem>,
|
|
151
|
-
<OverflowMenuDropdownItem key="secondary" isShared>
|
|
172
|
+
<OverflowMenuDropdownItem itemId={4} key="secondary" isShared>
|
|
152
173
|
Secondary
|
|
153
174
|
</OverflowMenuDropdownItem>,
|
|
154
|
-
<OverflowMenuDropdownItem key="tertiary" isShared>
|
|
175
|
+
<OverflowMenuDropdownItem itemId={5} key="tertiary" isShared>
|
|
155
176
|
Tertiary
|
|
156
177
|
</OverflowMenuDropdownItem>,
|
|
157
|
-
<OverflowMenuDropdownItem key="action1" isShared>
|
|
178
|
+
<OverflowMenuDropdownItem itemId={6} key="action1" isShared>
|
|
158
179
|
Action 1
|
|
159
180
|
</OverflowMenuDropdownItem>,
|
|
160
|
-
<OverflowMenuDropdownItem key="action2" isShared>
|
|
181
|
+
<OverflowMenuDropdownItem itemId={7} key="action2" isShared>
|
|
161
182
|
Action 2
|
|
162
183
|
</OverflowMenuDropdownItem>,
|
|
163
|
-
<OverflowMenuDropdownItem key="action3" isShared>
|
|
184
|
+
<OverflowMenuDropdownItem itemId={8} key="action3" isShared>
|
|
164
185
|
Action 3
|
|
165
186
|
</OverflowMenuDropdownItem>
|
|
166
187
|
];
|
|
@@ -202,15 +223,28 @@ class OverflowMenuGroupTypes extends React.Component {
|
|
|
202
223
|
</OverflowMenuGroup>
|
|
203
224
|
</OverflowMenuContent>
|
|
204
225
|
<OverflowMenuControl>
|
|
205
|
-
<
|
|
226
|
+
<DropdownNext
|
|
206
227
|
onSelect={this.onSelect}
|
|
207
|
-
toggle={
|
|
228
|
+
toggle={(toggleRef) => (
|
|
229
|
+
<MenuToggle
|
|
230
|
+
ref={toggleRef}
|
|
231
|
+
aria-label="Group example overflow menu"
|
|
232
|
+
variant="plain"
|
|
233
|
+
onClick={this.onToggle}
|
|
234
|
+
isExpanded={isOpen}
|
|
235
|
+
>
|
|
236
|
+
<EllipsisVIcon />
|
|
237
|
+
</MenuToggle>
|
|
238
|
+
)}
|
|
208
239
|
isOpen={isOpen}
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
240
|
+
onOpenChange={(isOpen) =>
|
|
241
|
+
this.setState({
|
|
242
|
+
isOpen
|
|
243
|
+
})
|
|
244
|
+
}
|
|
245
|
+
>
|
|
246
|
+
<DropdownList>{dropdownItems}</DropdownList>
|
|
247
|
+
</DropdownNext>
|
|
214
248
|
</OverflowMenuControl>
|
|
215
249
|
</OverflowMenu>
|
|
216
250
|
);
|
|
@@ -228,9 +262,13 @@ import {
|
|
|
228
262
|
OverflowMenuContent,
|
|
229
263
|
OverflowMenuGroup,
|
|
230
264
|
OverflowMenuItem,
|
|
231
|
-
OverflowMenuDropdownItem
|
|
265
|
+
OverflowMenuDropdownItem,
|
|
266
|
+
MenuToggle,
|
|
267
|
+
Button,
|
|
268
|
+
ButtonVariant
|
|
232
269
|
} from '@patternfly/react-core';
|
|
233
|
-
import { Dropdown
|
|
270
|
+
import { Dropdown as DropdownNext, DropdownList } from '@patternfly/react-core/next';
|
|
271
|
+
import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
|
|
234
272
|
import AlignLeftIcon from '@patternfly/react-icons/dist/esm/icons/align-left-icon';
|
|
235
273
|
import AlignCenterIcon from '@patternfly/react-icons/dist/esm/icons/align-center-icon';
|
|
236
274
|
import AlignRightIcon from '@patternfly/react-icons/dist/esm/icons/align-right-icon';
|
|
@@ -241,12 +279,12 @@ class OverflowMenuAdditionalOptions extends React.Component {
|
|
|
241
279
|
this.state = {
|
|
242
280
|
isOpen: false
|
|
243
281
|
};
|
|
244
|
-
this.onToggle = (
|
|
282
|
+
this.onToggle = () => {
|
|
245
283
|
this.setState({
|
|
246
|
-
isOpen
|
|
284
|
+
isOpen: !this.state.isOpen
|
|
247
285
|
});
|
|
248
286
|
};
|
|
249
|
-
this.onSelect = event => {
|
|
287
|
+
this.onSelect = (event) => {
|
|
250
288
|
this.setState({
|
|
251
289
|
isOpen: !this.state.isOpen
|
|
252
290
|
});
|
|
@@ -256,25 +294,27 @@ class OverflowMenuAdditionalOptions extends React.Component {
|
|
|
256
294
|
render() {
|
|
257
295
|
const { isOpen } = this.state;
|
|
258
296
|
const dropdownItems = [
|
|
259
|
-
<OverflowMenuDropdownItem key="1" isShared>
|
|
297
|
+
<OverflowMenuDropdownItem itemId={0} key="1" isShared>
|
|
260
298
|
Primary
|
|
261
299
|
</OverflowMenuDropdownItem>,
|
|
262
|
-
<OverflowMenuDropdownItem key="2" isShared>
|
|
300
|
+
<OverflowMenuDropdownItem itemId={1} key="2" isShared>
|
|
263
301
|
Secondary
|
|
264
302
|
</OverflowMenuDropdownItem>,
|
|
265
|
-
<OverflowMenuDropdownItem key="3" isShared>
|
|
303
|
+
<OverflowMenuDropdownItem itemId={2} key="3" isShared>
|
|
266
304
|
Tertiary
|
|
267
305
|
</OverflowMenuDropdownItem>,
|
|
268
|
-
<OverflowMenuDropdownItem key="4" isShared>
|
|
306
|
+
<OverflowMenuDropdownItem itemId={3} key="4" isShared>
|
|
269
307
|
Action 4
|
|
270
308
|
</OverflowMenuDropdownItem>,
|
|
271
|
-
<OverflowMenuDropdownItem key="5" isShared>
|
|
309
|
+
<OverflowMenuDropdownItem itemId={4} key="5" isShared>
|
|
272
310
|
Action 5
|
|
273
311
|
</OverflowMenuDropdownItem>,
|
|
274
|
-
<OverflowMenuDropdownItem key="6" isShared>
|
|
312
|
+
<OverflowMenuDropdownItem itemId={5} key="6" isShared>
|
|
275
313
|
Action 6
|
|
276
314
|
</OverflowMenuDropdownItem>,
|
|
277
|
-
<OverflowMenuDropdownItem key="7">
|
|
315
|
+
<OverflowMenuDropdownItem itemId={6} key="7">
|
|
316
|
+
Action 7
|
|
317
|
+
</OverflowMenuDropdownItem>
|
|
278
318
|
];
|
|
279
319
|
return (
|
|
280
320
|
<OverflowMenu breakpoint="lg">
|
|
@@ -309,15 +349,28 @@ class OverflowMenuAdditionalOptions extends React.Component {
|
|
|
309
349
|
</OverflowMenuGroup>
|
|
310
350
|
</OverflowMenuContent>
|
|
311
351
|
<OverflowMenuControl hasAdditionalOptions>
|
|
312
|
-
<
|
|
352
|
+
<DropdownNext
|
|
313
353
|
onSelect={this.onSelect}
|
|
314
|
-
toggle={
|
|
354
|
+
toggle={(toggleRef) => (
|
|
355
|
+
<MenuToggle
|
|
356
|
+
ref={toggleRef}
|
|
357
|
+
aria-label="Multiple group example overflow menu"
|
|
358
|
+
variant="plain"
|
|
359
|
+
onClick={this.onToggle}
|
|
360
|
+
isExpanded={isOpen}
|
|
361
|
+
>
|
|
362
|
+
<EllipsisVIcon />
|
|
363
|
+
</MenuToggle>
|
|
364
|
+
)}
|
|
315
365
|
isOpen={isOpen}
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
366
|
+
onOpenChange={(isOpen) =>
|
|
367
|
+
this.setState({
|
|
368
|
+
isOpen
|
|
369
|
+
})
|
|
370
|
+
}
|
|
371
|
+
>
|
|
372
|
+
<DropdownList>{dropdownItems}</DropdownList>
|
|
373
|
+
</DropdownNext>
|
|
321
374
|
</OverflowMenuControl>
|
|
322
375
|
</OverflowMenu>
|
|
323
376
|
);
|
|
@@ -335,9 +388,13 @@ import {
|
|
|
335
388
|
OverflowMenuContent,
|
|
336
389
|
OverflowMenuGroup,
|
|
337
390
|
OverflowMenuItem,
|
|
338
|
-
OverflowMenuDropdownItem
|
|
391
|
+
OverflowMenuDropdownItem,
|
|
392
|
+
MenuToggle,
|
|
393
|
+
Button,
|
|
394
|
+
ButtonVariant
|
|
339
395
|
} from '@patternfly/react-core';
|
|
340
|
-
import { Dropdown
|
|
396
|
+
import { Dropdown as DropdownNext, DropdownList } from '@patternfly/react-core/next';
|
|
397
|
+
import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
|
|
341
398
|
|
|
342
399
|
class OverflowMenuPersist extends React.Component {
|
|
343
400
|
constructor(props) {
|
|
@@ -345,12 +402,12 @@ class OverflowMenuPersist extends React.Component {
|
|
|
345
402
|
this.state = {
|
|
346
403
|
isOpen: false
|
|
347
404
|
};
|
|
348
|
-
this.onToggle = (
|
|
405
|
+
this.onToggle = () => {
|
|
349
406
|
this.setState({
|
|
350
|
-
isOpen
|
|
407
|
+
isOpen: !this.state.isOpen
|
|
351
408
|
});
|
|
352
409
|
};
|
|
353
|
-
this.onSelect = event => {
|
|
410
|
+
this.onSelect = (event, itemId) => {
|
|
354
411
|
this.setState({
|
|
355
412
|
isOpen: !this.state.isOpen
|
|
356
413
|
});
|
|
@@ -360,13 +417,15 @@ class OverflowMenuPersist extends React.Component {
|
|
|
360
417
|
render() {
|
|
361
418
|
const { isOpen } = this.state;
|
|
362
419
|
const dropdownItems = [
|
|
363
|
-
<OverflowMenuDropdownItem key="secondary" isShared>
|
|
420
|
+
<OverflowMenuDropdownItem itemId={0} key="secondary" isShared>
|
|
364
421
|
Secondary
|
|
365
422
|
</OverflowMenuDropdownItem>,
|
|
366
|
-
<OverflowMenuDropdownItem key="tertiary" isShared>
|
|
423
|
+
<OverflowMenuDropdownItem itemId={1} key="tertiary" isShared>
|
|
367
424
|
Tertiary
|
|
368
425
|
</OverflowMenuDropdownItem>,
|
|
369
|
-
<OverflowMenuDropdownItem key="action">
|
|
426
|
+
<OverflowMenuDropdownItem itemId={2} key="action">
|
|
427
|
+
Action 4
|
|
428
|
+
</OverflowMenuDropdownItem>
|
|
370
429
|
];
|
|
371
430
|
return (
|
|
372
431
|
<OverflowMenu breakpoint="lg">
|
|
@@ -384,15 +443,28 @@ class OverflowMenuPersist extends React.Component {
|
|
|
384
443
|
</OverflowMenuGroup>
|
|
385
444
|
</OverflowMenuContent>
|
|
386
445
|
<OverflowMenuControl hasAdditionalOptions>
|
|
387
|
-
<
|
|
446
|
+
<DropdownNext
|
|
388
447
|
onSelect={this.onSelect}
|
|
389
|
-
toggle={
|
|
448
|
+
toggle={(toggleRef) => (
|
|
449
|
+
<MenuToggle
|
|
450
|
+
ref={toggleRef}
|
|
451
|
+
aria-label="Persistent example overflow menu"
|
|
452
|
+
variant="plain"
|
|
453
|
+
onClick={this.onToggle}
|
|
454
|
+
isExpanded={isOpen}
|
|
455
|
+
>
|
|
456
|
+
<EllipsisVIcon />
|
|
457
|
+
</MenuToggle>
|
|
458
|
+
)}
|
|
390
459
|
isOpen={isOpen}
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
460
|
+
onOpenChange={(isOpen) =>
|
|
461
|
+
this.setState({
|
|
462
|
+
isOpen
|
|
463
|
+
})
|
|
464
|
+
}
|
|
465
|
+
>
|
|
466
|
+
<DropdownList>{dropdownItems}</DropdownList>
|
|
467
|
+
</DropdownNext>
|
|
396
468
|
</OverflowMenuControl>
|
|
397
469
|
</OverflowMenu>
|
|
398
470
|
);
|
|
@@ -407,4 +479,5 @@ By passing in the `breakpointReference` property, the overflow menu's breakpoint
|
|
|
407
479
|
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
480
|
|
|
409
481
|
```ts file="./OverflowMenuBreakpointOnContainer.tsx"
|
|
482
|
+
|
|
410
483
|
```
|