@patternfly/react-core 5.0.0-alpha.97 → 5.0.0-alpha.99
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 +13 -0
- package/dist/esm/components/AboutModal/package.json +1 -1
- package/dist/esm/components/Accordion/package.json +1 -1
- package/dist/esm/components/ActionList/package.json +1 -1
- package/dist/esm/components/Alert/package.json +1 -1
- package/dist/esm/components/Avatar/package.json +1 -1
- package/dist/esm/components/BackToTop/package.json +1 -1
- package/dist/esm/components/Backdrop/package.json +1 -1
- package/dist/esm/components/BackgroundImage/package.json +1 -1
- package/dist/esm/components/Badge/package.json +1 -1
- package/dist/esm/components/Banner/package.json +1 -1
- package/dist/esm/components/Brand/package.json +1 -1
- package/dist/esm/components/Breadcrumb/package.json +1 -1
- package/dist/esm/components/Button/package.json +1 -1
- package/dist/esm/components/CalendarMonth/package.json +1 -1
- package/dist/esm/components/Card/package.json +1 -1
- package/dist/esm/components/Checkbox/package.json +1 -1
- package/dist/esm/components/Chip/package.json +1 -1
- package/dist/esm/components/ClipboardCopy/package.json +1 -1
- package/dist/esm/components/CodeBlock/package.json +1 -1
- package/dist/esm/components/DataList/package.json +1 -1
- package/dist/esm/components/DatePicker/package.json +1 -1
- package/dist/esm/components/DescriptionList/package.json +1 -1
- package/dist/esm/components/Divider/package.json +1 -1
- package/dist/esm/components/DragDrop/package.json +1 -1
- package/dist/esm/components/Drawer/package.json +1 -1
- package/dist/esm/components/Dropdown/DropdownItem.d.ts +1 -1
- package/dist/esm/components/Dropdown/DropdownItem.d.ts.map +1 -1
- package/dist/esm/components/Dropdown/DropdownItem.js +1 -1
- package/dist/esm/components/Dropdown/DropdownItem.js.map +1 -1
- package/dist/esm/components/Dropdown/package.json +1 -1
- package/dist/esm/components/DualListSelector/package.json +1 -1
- package/dist/esm/components/EmptyState/package.json +1 -1
- package/dist/esm/components/ExpandableSection/package.json +1 -1
- package/dist/esm/components/FileUpload/package.json +1 -1
- package/dist/esm/components/Form/package.json +1 -1
- package/dist/esm/components/FormSelect/package.json +1 -1
- package/dist/esm/components/HelperText/package.json +1 -1
- package/dist/esm/components/Hint/package.json +1 -1
- package/dist/esm/components/Icon/package.json +1 -1
- package/dist/esm/components/InputGroup/package.json +1 -1
- package/dist/esm/components/JumpLinks/package.json +1 -1
- package/dist/esm/components/Label/Label.d.ts.map +1 -1
- package/dist/esm/components/Label/Label.js +8 -6
- package/dist/esm/components/Label/Label.js.map +1 -1
- package/dist/esm/components/Label/package.json +1 -1
- package/dist/esm/components/List/package.json +1 -1
- package/dist/esm/components/LoginPage/package.json +1 -1
- package/dist/esm/components/Masthead/package.json +1 -1
- package/dist/esm/components/Menu/package.json +1 -1
- package/dist/esm/components/MenuToggle/package.json +1 -1
- package/dist/esm/components/Modal/package.json +1 -1
- package/dist/esm/components/MultipleFileUpload/package.json +1 -1
- package/dist/esm/components/Nav/package.json +1 -1
- package/dist/esm/components/NotificationBadge/package.json +1 -1
- package/dist/esm/components/NotificationDrawer/package.json +1 -1
- package/dist/esm/components/NumberInput/package.json +1 -1
- package/dist/esm/components/OverflowMenu/package.json +1 -1
- package/dist/esm/components/Page/package.json +1 -1
- package/dist/esm/components/Pagination/package.json +1 -1
- package/dist/esm/components/Panel/package.json +1 -1
- package/dist/esm/components/Popover/package.json +1 -1
- package/dist/esm/components/Progress/package.json +1 -1
- package/dist/esm/components/ProgressStepper/package.json +1 -1
- package/dist/esm/components/Radio/package.json +1 -1
- package/dist/esm/components/SearchInput/package.json +1 -1
- package/dist/esm/components/Select/package.json +1 -1
- package/dist/esm/components/Sidebar/package.json +1 -1
- package/dist/esm/components/SimpleList/package.json +1 -1
- package/dist/esm/components/Skeleton/package.json +1 -1
- package/dist/esm/components/SkipToContent/package.json +1 -1
- package/dist/esm/components/Slider/package.json +1 -1
- package/dist/esm/components/Spinner/package.json +1 -1
- package/dist/esm/components/Switch/package.json +1 -1
- package/dist/esm/components/Tabs/package.json +1 -1
- package/dist/esm/components/Text/package.json +1 -1
- package/dist/esm/components/TextArea/package.json +1 -1
- package/dist/esm/components/TextInput/package.json +1 -1
- package/dist/esm/components/TextInputGroup/package.json +1 -1
- package/dist/esm/components/Tile/package.json +1 -1
- package/dist/esm/components/TimePicker/package.json +1 -1
- package/dist/esm/components/Timestamp/package.json +1 -1
- package/dist/esm/components/Title/package.json +1 -1
- package/dist/esm/components/ToggleGroup/package.json +1 -1
- package/dist/esm/components/Toolbar/package.json +1 -1
- package/dist/esm/components/Tooltip/package.json +1 -1
- package/dist/esm/components/TreeView/package.json +1 -1
- package/dist/esm/components/Truncate/package.json +1 -1
- package/dist/esm/components/Wizard/hooks/package.json +1 -1
- package/dist/esm/components/Wizard/package.json +1 -1
- package/dist/esm/components/package.json +1 -1
- package/dist/esm/deprecated/components/ApplicationLauncher/package.json +1 -1
- package/dist/esm/deprecated/components/ContextSelector/package.json +1 -1
- package/dist/esm/deprecated/components/Dropdown/package.json +1 -1
- package/dist/esm/deprecated/components/OptionsMenu/package.json +1 -1
- package/dist/esm/deprecated/components/PageHeader/package.json +1 -1
- package/dist/esm/deprecated/components/Select/package.json +1 -1
- package/dist/esm/deprecated/components/Wizard/package.json +1 -1
- package/dist/esm/deprecated/components/package.json +1 -1
- package/dist/esm/deprecated/package.json +1 -1
- package/dist/esm/helpers/Popper/thirdparty/popper-core/package.json +1 -1
- package/dist/esm/helpers/package.json +1 -1
- package/dist/esm/layouts/Bullseye/package.json +1 -1
- package/dist/esm/layouts/Flex/package.json +1 -1
- package/dist/esm/layouts/Gallery/package.json +1 -1
- package/dist/esm/layouts/Grid/package.json +1 -1
- package/dist/esm/layouts/Level/package.json +1 -1
- package/dist/esm/layouts/Split/package.json +1 -1
- package/dist/esm/layouts/Stack/package.json +1 -1
- package/dist/esm/layouts/package.json +1 -1
- package/dist/esm/next/components/package.json +1 -1
- package/dist/esm/next/package.json +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/js/components/AboutModal/package.json +1 -1
- package/dist/js/components/Accordion/package.json +1 -1
- package/dist/js/components/ActionList/package.json +1 -1
- package/dist/js/components/Alert/package.json +1 -1
- package/dist/js/components/Avatar/package.json +1 -1
- package/dist/js/components/BackToTop/package.json +1 -1
- package/dist/js/components/Backdrop/package.json +1 -1
- package/dist/js/components/BackgroundImage/package.json +1 -1
- package/dist/js/components/Badge/package.json +1 -1
- package/dist/js/components/Banner/package.json +1 -1
- package/dist/js/components/Brand/package.json +1 -1
- package/dist/js/components/Breadcrumb/package.json +1 -1
- package/dist/js/components/Button/package.json +1 -1
- package/dist/js/components/CalendarMonth/package.json +1 -1
- package/dist/js/components/Card/package.json +1 -1
- package/dist/js/components/Checkbox/package.json +1 -1
- package/dist/js/components/Chip/package.json +1 -1
- package/dist/js/components/ClipboardCopy/package.json +1 -1
- package/dist/js/components/CodeBlock/package.json +1 -1
- package/dist/js/components/DataList/package.json +1 -1
- package/dist/js/components/DatePicker/package.json +1 -1
- package/dist/js/components/DescriptionList/package.json +1 -1
- package/dist/js/components/Divider/package.json +1 -1
- package/dist/js/components/DragDrop/package.json +1 -1
- package/dist/js/components/Drawer/package.json +1 -1
- package/dist/js/components/Dropdown/DropdownItem.d.ts +1 -1
- package/dist/js/components/Dropdown/DropdownItem.d.ts.map +1 -1
- package/dist/js/components/Dropdown/DropdownItem.js +1 -1
- package/dist/js/components/Dropdown/DropdownItem.js.map +1 -1
- package/dist/js/components/Dropdown/package.json +1 -1
- package/dist/js/components/DualListSelector/package.json +1 -1
- package/dist/js/components/EmptyState/package.json +1 -1
- package/dist/js/components/ExpandableSection/package.json +1 -1
- package/dist/js/components/FileUpload/package.json +1 -1
- package/dist/js/components/Form/package.json +1 -1
- package/dist/js/components/FormSelect/package.json +1 -1
- package/dist/js/components/HelperText/package.json +1 -1
- package/dist/js/components/Hint/package.json +1 -1
- package/dist/js/components/Icon/package.json +1 -1
- package/dist/js/components/InputGroup/package.json +1 -1
- package/dist/js/components/JumpLinks/package.json +1 -1
- package/dist/js/components/Label/Label.d.ts.map +1 -1
- package/dist/js/components/Label/Label.js +8 -6
- package/dist/js/components/Label/Label.js.map +1 -1
- package/dist/js/components/Label/package.json +1 -1
- package/dist/js/components/List/package.json +1 -1
- package/dist/js/components/LoginPage/package.json +1 -1
- package/dist/js/components/Masthead/package.json +1 -1
- package/dist/js/components/Menu/package.json +1 -1
- package/dist/js/components/MenuToggle/package.json +1 -1
- package/dist/js/components/Modal/package.json +1 -1
- package/dist/js/components/MultipleFileUpload/package.json +1 -1
- package/dist/js/components/Nav/package.json +1 -1
- package/dist/js/components/NotificationBadge/package.json +1 -1
- package/dist/js/components/NotificationDrawer/package.json +1 -1
- package/dist/js/components/NumberInput/package.json +1 -1
- package/dist/js/components/OverflowMenu/package.json +1 -1
- package/dist/js/components/Page/package.json +1 -1
- package/dist/js/components/Pagination/package.json +1 -1
- package/dist/js/components/Panel/package.json +1 -1
- package/dist/js/components/Popover/package.json +1 -1
- package/dist/js/components/Progress/package.json +1 -1
- package/dist/js/components/ProgressStepper/package.json +1 -1
- package/dist/js/components/Radio/package.json +1 -1
- package/dist/js/components/SearchInput/package.json +1 -1
- package/dist/js/components/Select/package.json +1 -1
- package/dist/js/components/Sidebar/package.json +1 -1
- package/dist/js/components/SimpleList/package.json +1 -1
- package/dist/js/components/Skeleton/package.json +1 -1
- package/dist/js/components/SkipToContent/package.json +1 -1
- package/dist/js/components/Slider/package.json +1 -1
- package/dist/js/components/Spinner/package.json +1 -1
- package/dist/js/components/Switch/package.json +1 -1
- package/dist/js/components/Tabs/package.json +1 -1
- package/dist/js/components/Text/package.json +1 -1
- package/dist/js/components/TextArea/package.json +1 -1
- package/dist/js/components/TextInput/package.json +1 -1
- package/dist/js/components/TextInputGroup/package.json +1 -1
- package/dist/js/components/Tile/package.json +1 -1
- package/dist/js/components/TimePicker/package.json +1 -1
- package/dist/js/components/Timestamp/package.json +1 -1
- package/dist/js/components/Title/package.json +1 -1
- package/dist/js/components/ToggleGroup/package.json +1 -1
- package/dist/js/components/Toolbar/package.json +1 -1
- package/dist/js/components/Tooltip/package.json +1 -1
- package/dist/js/components/TreeView/package.json +1 -1
- package/dist/js/components/Truncate/package.json +1 -1
- package/dist/js/components/Wizard/hooks/package.json +1 -1
- package/dist/js/components/Wizard/package.json +1 -1
- package/dist/js/components/package.json +1 -1
- package/dist/js/deprecated/components/ApplicationLauncher/package.json +1 -1
- package/dist/js/deprecated/components/ContextSelector/package.json +1 -1
- package/dist/js/deprecated/components/Dropdown/package.json +1 -1
- package/dist/js/deprecated/components/OptionsMenu/package.json +1 -1
- package/dist/js/deprecated/components/PageHeader/package.json +1 -1
- package/dist/js/deprecated/components/Select/package.json +1 -1
- package/dist/js/deprecated/components/Wizard/package.json +1 -1
- package/dist/js/deprecated/components/package.json +1 -1
- package/dist/js/deprecated/package.json +1 -1
- package/dist/js/helpers/Popper/thirdparty/popper-core/package.json +1 -1
- package/dist/js/helpers/package.json +1 -1
- package/dist/js/layouts/Bullseye/package.json +1 -1
- package/dist/js/layouts/Flex/package.json +1 -1
- package/dist/js/layouts/Gallery/package.json +1 -1
- package/dist/js/layouts/Grid/package.json +1 -1
- package/dist/js/layouts/Level/package.json +1 -1
- package/dist/js/layouts/Split/package.json +1 -1
- package/dist/js/layouts/Stack/package.json +1 -1
- package/dist/js/layouts/package.json +1 -1
- package/dist/js/next/components/package.json +1 -1
- package/dist/js/next/package.json +1 -1
- package/dist/js/package.json +1 -1
- package/dist/umd/react-core.min.js +3 -3
- package/package.json +3 -3
- package/src/components/Dropdown/DropdownItem.tsx +4 -3
- package/src/components/Label/Label.tsx +21 -20
- package/src/components/Popover/examples/Popover.md +11 -0
- package/src/components/Popover/examples/PopoverAlert.tsx +1 -0
- package/src/components/Popover/examples/PopoverWidthAuto.tsx +1 -0
- package/src/components/Popover/examples/PopoverWithIconInTheTitle.tsx +1 -0
- package/src/components/Wizard/hooks/__tests__/useWizardFooter.test.tsx +1 -1
- package/src/demos/examples/DashboardWrapper.js +1 -1
- package/src/demos/examples/Tabs/TabsAndTable.tsx +38 -4
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.99",
|
|
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",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"@patternfly/react-icons": "^5.0.0-alpha.14",
|
|
50
50
|
"@patternfly/react-styles": "^5.0.0-alpha.10",
|
|
51
51
|
"@patternfly/react-tokens": "^5.0.0-alpha.9",
|
|
52
|
-
"focus-trap": "7.4.
|
|
52
|
+
"focus-trap": "7.4.1",
|
|
53
53
|
"react-dropzone": "^14.2.3",
|
|
54
54
|
"tslib": "^2.5.0"
|
|
55
55
|
},
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
"react": "^17 || ^18",
|
|
72
72
|
"react-dom": "^17 || ^18"
|
|
73
73
|
},
|
|
74
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "00f77395c5d7d3e1fb8fc44c337cfdb63ab31638"
|
|
75
75
|
}
|
|
@@ -27,7 +27,7 @@ export interface DropdownItemProps extends Omit<MenuItemProps, 'ref'>, OUIAProps
|
|
|
27
27
|
ouiaSafe?: boolean;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
const DropdownItemBase: React.FunctionComponent<
|
|
30
|
+
const DropdownItemBase: React.FunctionComponent<DropdownItemProps> = ({
|
|
31
31
|
children,
|
|
32
32
|
className,
|
|
33
33
|
description,
|
|
@@ -42,12 +42,12 @@ const DropdownItemBase: React.FunctionComponent<MenuItemProps> = ({
|
|
|
42
42
|
const ouiaProps = useOUIAProps(DropdownItem.displayName, ouiaId, ouiaSafe);
|
|
43
43
|
return (
|
|
44
44
|
<MenuItem
|
|
45
|
-
ref={innerRef}
|
|
46
45
|
className={css(className)}
|
|
47
46
|
description={description}
|
|
48
47
|
isDisabled={isDisabled}
|
|
49
48
|
itemId={itemId}
|
|
50
49
|
onClick={onClick}
|
|
50
|
+
ref={innerRef}
|
|
51
51
|
{...ouiaProps}
|
|
52
52
|
{...props}
|
|
53
53
|
>
|
|
@@ -55,7 +55,8 @@ const DropdownItemBase: React.FunctionComponent<MenuItemProps> = ({
|
|
|
55
55
|
</MenuItem>
|
|
56
56
|
);
|
|
57
57
|
};
|
|
58
|
-
|
|
58
|
+
|
|
59
|
+
export const DropdownItem = React.forwardRef((props: DropdownItemProps, ref: React.Ref<HTMLAnchorElement | HTMLButtonElement>) => (
|
|
59
60
|
<DropdownItemBase {...props} innerRef={ref} />
|
|
60
61
|
));
|
|
61
62
|
|
|
@@ -232,30 +232,31 @@ export const Label: React.FunctionComponent<LabelProps> = ({
|
|
|
232
232
|
setCurrValue(editableInputRef.current.value);
|
|
233
233
|
};
|
|
234
234
|
|
|
235
|
-
let
|
|
236
|
-
|
|
235
|
+
let LabelComponentChildElement = 'span';
|
|
237
236
|
if (href) {
|
|
238
|
-
|
|
239
|
-
<a className={css(styles.labelContent)} href={href}>
|
|
240
|
-
{content}
|
|
241
|
-
</a>
|
|
242
|
-
);
|
|
237
|
+
LabelComponentChildElement = 'a';
|
|
243
238
|
} else if (isEditable) {
|
|
244
|
-
|
|
245
|
-
<button
|
|
246
|
-
ref={editableButtonRef}
|
|
247
|
-
className={css(styles.labelContent)}
|
|
248
|
-
onClick={(e: React.MouseEvent) => {
|
|
249
|
-
setIsEditableActive(true);
|
|
250
|
-
e.stopPropagation();
|
|
251
|
-
}}
|
|
252
|
-
{...editableProps}
|
|
253
|
-
>
|
|
254
|
-
{content}
|
|
255
|
-
</button>
|
|
256
|
-
);
|
|
239
|
+
LabelComponentChildElement = 'button';
|
|
257
240
|
}
|
|
258
241
|
|
|
242
|
+
const labelComponentChildProps = {
|
|
243
|
+
className: css(styles.labelContent),
|
|
244
|
+
...(isTooltipVisible && { tabIndex: 0 }),
|
|
245
|
+
...(href && { href }),
|
|
246
|
+
...(isEditable && {
|
|
247
|
+
ref: editableButtonRef,
|
|
248
|
+
onClick: (e: React.MouseEvent) => {
|
|
249
|
+
setIsEditableActive(true);
|
|
250
|
+
e.stopPropagation();
|
|
251
|
+
},
|
|
252
|
+
...editableProps
|
|
253
|
+
})
|
|
254
|
+
};
|
|
255
|
+
|
|
256
|
+
let labelComponentChild = (
|
|
257
|
+
<LabelComponentChildElement {...labelComponentChildProps}>{content}</LabelComponentChildElement>
|
|
258
|
+
);
|
|
259
|
+
|
|
259
260
|
if (render) {
|
|
260
261
|
labelComponentChild = (
|
|
261
262
|
<React.Fragment>
|
|
@@ -14,6 +14,11 @@ import BullhornIcon from '@patternfly/react-icons/dist/esm/icons/bullhorn-icon';
|
|
|
14
14
|
|
|
15
15
|
## Examples
|
|
16
16
|
|
|
17
|
+
By default, the `appendTo` prop of the popover will append it to the parent element. However, in some cases, the popover might be too big for the parent and not fully visible. To solve this issue, users have two options:
|
|
18
|
+
|
|
19
|
+
1. Add the prop `appendTo={() => document.body}` to append the popover to the document body instead of the parent element.
|
|
20
|
+
2. Increase the z-index of the parent element to be higher than the z-index of the element that is hiding the popover.
|
|
21
|
+
|
|
17
22
|
### Basic
|
|
18
23
|
|
|
19
24
|
```ts file="./PopoverBasic.tsx"
|
|
@@ -38,6 +43,8 @@ Note: If you use the isVisible prop, either refer to the example above or if you
|
|
|
38
43
|
|
|
39
44
|
### Width auto
|
|
40
45
|
|
|
46
|
+
Here the popover goes over the navigation, so the prop `appendTo` is set to the documents body.
|
|
47
|
+
|
|
41
48
|
```ts file="./PopoverWidthAuto.tsx"
|
|
42
49
|
```
|
|
43
50
|
|
|
@@ -58,10 +65,14 @@ Note: If you use the isVisible prop, either refer to the example above or if you
|
|
|
58
65
|
|
|
59
66
|
### Popover with icon in the title
|
|
60
67
|
|
|
68
|
+
Here the popover goes over the navigation, so the prop `appendTo` is set to the documents body.
|
|
69
|
+
|
|
61
70
|
```ts file="./PopoverWithIconInTheTitle.tsx"
|
|
62
71
|
```
|
|
63
72
|
|
|
64
73
|
### Alert popover
|
|
65
74
|
|
|
75
|
+
Here the popover goes over the navigation, so the prop `appendTo` is set to the documents body.
|
|
76
|
+
|
|
66
77
|
```ts file="./PopoverAlert.tsx"
|
|
67
78
|
```
|
|
@@ -38,6 +38,7 @@ export const AlertPopover: React.FunctionComponent = () => {
|
|
|
38
38
|
headerComponent="h1"
|
|
39
39
|
bodyContent={<div>Popovers are triggered by click rather than hover.</div>}
|
|
40
40
|
footerContent="Popover footer"
|
|
41
|
+
appendTo={() => document.body}
|
|
41
42
|
>
|
|
42
43
|
<Button>Toggle popover</Button>
|
|
43
44
|
</Popover>
|
|
@@ -7,6 +7,7 @@ export const PopoverWidthAuto: React.FunctionComponent = () => (
|
|
|
7
7
|
aria-label="Popover with auto-width"
|
|
8
8
|
hasAutoWidth
|
|
9
9
|
bodyContent={() => <div>Removes fixed-width and allows width to be defined by contents</div>}
|
|
10
|
+
appendTo={() => document.body}
|
|
10
11
|
>
|
|
11
12
|
<Button>Toggle popover</Button>
|
|
12
13
|
</Popover>
|
|
@@ -10,6 +10,7 @@ export const PopoverWithIconInTheTitle: React.FunctionComponent = () => (
|
|
|
10
10
|
headerIcon={<BullhornIcon />}
|
|
11
11
|
bodyContent={<div>Popovers are triggered by click rather than hover.</div>}
|
|
12
12
|
footerContent="Popover footer"
|
|
13
|
+
appendTo={() => document.body}
|
|
13
14
|
>
|
|
14
15
|
<Button>Toggle popover</Button>
|
|
15
16
|
</Popover>
|
|
@@ -56,6 +56,7 @@ import CodeBranchIcon from '@patternfly/react-icons/dist/esm/icons/code-branch-i
|
|
|
56
56
|
import CubeIcon from '@patternfly/react-icons/dist/esm/icons/cube-icon';
|
|
57
57
|
import FilterIcon from '@patternfly/react-icons/dist/esm/icons/filter-icon';
|
|
58
58
|
import SortAmountDownIcon from '@patternfly/react-icons/dist/esm/icons/sort-amount-down-icon';
|
|
59
|
+
import { KeyTypes } from '../../../helpers';
|
|
59
60
|
|
|
60
61
|
interface Repository {
|
|
61
62
|
name: string;
|
|
@@ -135,15 +136,47 @@ export const TablesAndTabs = () => {
|
|
|
135
136
|
}
|
|
136
137
|
];
|
|
137
138
|
|
|
139
|
+
const firstActionRef = React.useRef<HTMLButtonElement>(null);
|
|
140
|
+
|
|
141
|
+
/** Handles when the user clicks on the custom action toggle, stops propagation to prevent the drawer from opening */
|
|
142
|
+
const handleActionsToggleClick = (event: React.MouseEvent, ActionsToggleProps: CustomActionsToggleProps) => {
|
|
143
|
+
const { onToggle } = ActionsToggleProps;
|
|
144
|
+
|
|
145
|
+
onToggle(event);
|
|
146
|
+
event.stopPropagation();
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
/** Enables keyboard navigation of the custom actions toggle */
|
|
150
|
+
const handleActionsToggleKeyDown = (event: React.KeyboardEvent, ActionsToggleProps: CustomActionsToggleProps) => {
|
|
151
|
+
const { onToggle } = ActionsToggleProps;
|
|
152
|
+
const { Enter, Space, Escape, ArrowDown, ArrowUp } = KeyTypes;
|
|
153
|
+
|
|
154
|
+
const shouldToggle = [Enter, Space, Escape].includes(event.key);
|
|
155
|
+
const shouldFocus = [ArrowDown, ArrowUp, Enter, Space].includes(event.key);
|
|
156
|
+
|
|
157
|
+
if (shouldToggle) {
|
|
158
|
+
event.preventDefault();
|
|
159
|
+
event.stopPropagation();
|
|
160
|
+
onToggle(event);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
if (shouldFocus) {
|
|
164
|
+
setTimeout(() => {
|
|
165
|
+
firstActionRef.current?.focus();
|
|
166
|
+
}, 0);
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
|
|
138
170
|
const customActionsToggle = (props: CustomActionsToggleProps, toggleName: string) => (
|
|
139
171
|
<MenuToggle
|
|
140
172
|
isDisabled={props.isDisabled}
|
|
141
|
-
onClick={(event:
|
|
142
|
-
|
|
143
|
-
event.stopPropagation();
|
|
144
|
-
}}
|
|
173
|
+
onClick={(event: React.MouseEvent) => handleActionsToggleClick(event, props)}
|
|
174
|
+
onKeyDown={(event: React.KeyboardEvent) => handleActionsToggleKeyDown(event, props)}
|
|
145
175
|
variant="plain"
|
|
146
176
|
aria-label={`${toggleName} actions`}
|
|
177
|
+
aria-haspopup="menu"
|
|
178
|
+
isExpanded={props.isOpen}
|
|
179
|
+
ref={props.toggleRef}
|
|
147
180
|
>
|
|
148
181
|
<EllipsisVIcon />
|
|
149
182
|
</MenuToggle>
|
|
@@ -270,6 +303,7 @@ export const TablesAndTabs = () => {
|
|
|
270
303
|
<ActionsColumn
|
|
271
304
|
items={defaultActions}
|
|
272
305
|
actionsToggle={(props: CustomActionsToggleProps) => customActionsToggle(props, repo.name)}
|
|
306
|
+
firstActionItemRef={firstActionRef}
|
|
273
307
|
/>
|
|
274
308
|
</Td>
|
|
275
309
|
</Tr>
|