@patternfly/react-core 5.0.0-prerelease.24 → 5.0.0-prerelease.26
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 +17 -0
- package/components/package.json +1 -1
- package/deprecated/package.json +1 -1
- package/dist/dynamic/components/AboutModal/package.json +1 -1
- package/dist/dynamic/components/Accordion/package.json +1 -1
- package/dist/dynamic/components/ActionList/package.json +1 -1
- package/dist/dynamic/components/Alert/package.json +1 -1
- package/dist/dynamic/components/Avatar/package.json +1 -1
- package/dist/dynamic/components/BackToTop/package.json +1 -1
- package/dist/dynamic/components/Backdrop/package.json +1 -1
- package/dist/dynamic/components/BackgroundImage/package.json +1 -1
- package/dist/dynamic/components/Badge/package.json +1 -1
- package/dist/dynamic/components/Banner/package.json +1 -1
- package/dist/dynamic/components/Brand/package.json +1 -1
- package/dist/dynamic/components/Breadcrumb/package.json +1 -1
- package/dist/dynamic/components/Button/package.json +1 -1
- package/dist/dynamic/components/CalendarMonth/package.json +1 -1
- package/dist/dynamic/components/Card/package.json +1 -1
- package/dist/dynamic/components/Checkbox/package.json +1 -1
- package/dist/dynamic/components/Chip/package.json +1 -1
- package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
- package/dist/dynamic/components/CodeBlock/package.json +1 -1
- package/dist/dynamic/components/DataList/package.json +1 -1
- package/dist/dynamic/components/DatePicker/package.json +1 -1
- package/dist/dynamic/components/DescriptionList/package.json +1 -1
- package/dist/dynamic/components/Divider/package.json +1 -1
- package/dist/dynamic/components/DragDrop/package.json +1 -1
- package/dist/dynamic/components/Drawer/package.json +1 -1
- package/dist/dynamic/components/Dropdown/package.json +1 -1
- package/dist/dynamic/components/DualListSelector/package.json +1 -1
- package/dist/dynamic/components/EmptyState/package.json +1 -1
- package/dist/dynamic/components/ExpandableSection/package.json +1 -1
- package/dist/dynamic/components/FileUpload/package.json +1 -1
- package/dist/dynamic/components/Form/package.json +1 -1
- package/dist/dynamic/components/FormSelect/package.json +1 -1
- package/dist/dynamic/components/HelperText/package.json +1 -1
- package/dist/dynamic/components/Hint/package.json +1 -1
- package/dist/dynamic/components/Icon/package.json +1 -1
- package/dist/dynamic/components/InputGroup/package.json +1 -1
- package/dist/dynamic/components/JumpLinks/package.json +1 -1
- package/dist/dynamic/components/Label/package.json +1 -1
- package/dist/dynamic/components/List/package.json +1 -1
- package/dist/dynamic/components/LoginPage/package.json +1 -1
- package/dist/dynamic/components/Masthead/package.json +1 -1
- package/dist/dynamic/components/Menu/package.json +1 -1
- package/dist/dynamic/components/MenuToggle/package.json +1 -1
- package/dist/dynamic/components/Modal/package.json +1 -1
- package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
- package/dist/dynamic/components/Nav/package.json +1 -1
- package/dist/dynamic/components/NotificationBadge/package.json +1 -1
- package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
- package/dist/dynamic/components/NumberInput/package.json +1 -1
- package/dist/dynamic/components/OverflowMenu/package.json +1 -1
- package/dist/dynamic/components/Page/package.json +1 -1
- package/dist/dynamic/components/Pagination/package.json +1 -1
- package/dist/dynamic/components/Panel/package.json +1 -1
- package/dist/dynamic/components/Popover/package.json +1 -1
- package/dist/dynamic/components/Progress/package.json +1 -1
- package/dist/dynamic/components/ProgressStepper/package.json +1 -1
- package/dist/dynamic/components/Radio/package.json +1 -1
- package/dist/dynamic/components/SearchInput/package.json +1 -1
- package/dist/dynamic/components/Select/package.json +1 -1
- package/dist/dynamic/components/Sidebar/package.json +1 -1
- package/dist/dynamic/components/SimpleList/package.json +1 -1
- package/dist/dynamic/components/Skeleton/package.json +1 -1
- package/dist/dynamic/components/SkipToContent/package.json +1 -1
- package/dist/dynamic/components/Slider/package.json +1 -1
- package/dist/dynamic/components/Spinner/package.json +1 -1
- package/dist/dynamic/components/Switch/package.json +1 -1
- package/dist/dynamic/components/Tabs/package.json +1 -1
- package/dist/dynamic/components/Text/package.json +1 -1
- package/dist/dynamic/components/TextArea/package.json +1 -1
- package/dist/dynamic/components/TextInput/package.json +1 -1
- package/dist/dynamic/components/TextInputGroup/package.json +1 -1
- package/dist/dynamic/components/Tile/package.json +1 -1
- package/dist/dynamic/components/TimePicker/package.json +1 -1
- package/dist/dynamic/components/Timestamp/package.json +1 -1
- package/dist/dynamic/components/Title/package.json +1 -1
- package/dist/dynamic/components/ToggleGroup/package.json +1 -1
- package/dist/dynamic/components/Toolbar/package.json +1 -1
- package/dist/dynamic/components/Tooltip/package.json +1 -1
- package/dist/dynamic/components/TreeView/package.json +1 -1
- package/dist/dynamic/components/Truncate/package.json +1 -1
- package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
- package/dist/dynamic/components/Wizard/package.json +1 -1
- package/dist/dynamic/deprecated/components/ApplicationLauncher/package.json +1 -1
- package/dist/dynamic/deprecated/components/ContextSelector/package.json +1 -1
- package/dist/dynamic/deprecated/components/Dropdown/package.json +1 -1
- package/dist/dynamic/deprecated/components/OptionsMenu/package.json +1 -1
- package/dist/dynamic/deprecated/components/PageHeader/package.json +1 -1
- package/dist/dynamic/deprecated/components/Select/package.json +1 -1
- package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
- package/dist/dynamic/deprecated/components/package.json +1 -1
- package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
- package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
- package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
- package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
- package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
- package/dist/dynamic/helpers/constants/package.json +1 -1
- package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
- package/dist/dynamic/helpers/favorites/package.json +1 -1
- package/dist/dynamic/helpers/fileUtils/package.json +1 -1
- package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
- package/dist/dynamic/helpers/package.json +1 -1
- package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
- package/dist/dynamic/helpers/typeUtils/package.json +1 -1
- package/dist/dynamic/helpers/useInterval/package.json +1 -1
- package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
- package/dist/dynamic/helpers/util/package.json +1 -1
- package/dist/dynamic/layouts/Bullseye/package.json +1 -1
- package/dist/dynamic/layouts/Flex/package.json +1 -1
- package/dist/dynamic/layouts/Gallery/package.json +1 -1
- package/dist/dynamic/layouts/Grid/package.json +1 -1
- package/dist/dynamic/layouts/Level/package.json +1 -1
- package/dist/dynamic/layouts/Split/package.json +1 -1
- package/dist/dynamic/layouts/Stack/package.json +1 -1
- package/dist/dynamic/next/components/package.json +1 -1
- package/dist/esm/components/Dropdown/DropdownItem.d.ts +5 -0
- package/dist/esm/components/Dropdown/DropdownItem.d.ts.map +1 -1
- package/dist/esm/components/Dropdown/DropdownItem.js +2 -2
- package/dist/esm/components/Dropdown/DropdownItem.js.map +1 -1
- package/dist/esm/components/DualListSelector/DualListSelectorControl.d.ts +1 -1
- package/dist/esm/components/FileUpload/FileUploadField.js +1 -1
- package/dist/esm/components/FileUpload/FileUploadField.js.map +1 -1
- package/dist/esm/components/Menu/Menu.d.ts.map +1 -1
- package/dist/esm/components/Menu/Menu.js +3 -1
- package/dist/esm/components/Menu/Menu.js.map +1 -1
- package/dist/esm/components/Menu/MenuItem.d.ts +6 -1
- package/dist/esm/components/Menu/MenuItem.d.ts.map +1 -1
- package/dist/esm/components/Menu/MenuItem.js +26 -12
- package/dist/esm/components/Menu/MenuItem.js.map +1 -1
- package/dist/esm/components/Toolbar/ToolbarChipGroupContent.d.ts.map +1 -1
- package/dist/esm/components/Toolbar/ToolbarChipGroupContent.js +2 -1
- package/dist/esm/components/Toolbar/ToolbarChipGroupContent.js.map +1 -1
- package/dist/js/components/Dropdown/DropdownItem.d.ts +5 -0
- package/dist/js/components/Dropdown/DropdownItem.d.ts.map +1 -1
- package/dist/js/components/Dropdown/DropdownItem.js +2 -2
- package/dist/js/components/Dropdown/DropdownItem.js.map +1 -1
- package/dist/js/components/DualListSelector/DualListSelectorControl.d.ts +1 -1
- package/dist/js/components/FileUpload/FileUploadField.js +1 -1
- package/dist/js/components/FileUpload/FileUploadField.js.map +1 -1
- package/dist/js/components/Menu/Menu.d.ts.map +1 -1
- package/dist/js/components/Menu/Menu.js +3 -1
- package/dist/js/components/Menu/Menu.js.map +1 -1
- package/dist/js/components/Menu/MenuItem.d.ts +6 -1
- package/dist/js/components/Menu/MenuItem.d.ts.map +1 -1
- package/dist/js/components/Menu/MenuItem.js +26 -12
- package/dist/js/components/Menu/MenuItem.js.map +1 -1
- package/dist/js/components/Toolbar/ToolbarChipGroupContent.d.ts.map +1 -1
- package/dist/js/components/Toolbar/ToolbarChipGroupContent.js +2 -1
- package/dist/js/components/Toolbar/ToolbarChipGroupContent.js.map +1 -1
- package/dist/umd/react-core.min.js +2 -2
- package/helpers/package.json +1 -1
- package/layouts/package.json +1 -1
- package/next/package.json +1 -1
- package/package.json +2 -2
- package/src/components/Dropdown/DropdownItem.tsx +9 -0
- package/src/components/Dropdown/examples/Dropdown.md +2 -1
- package/src/components/Dropdown/examples/DropdownBasic.tsx +5 -2
- package/src/components/FileUpload/FileUploadField.tsx +1 -1
- package/src/components/FileUpload/__tests__/__snapshots__/FileUpload.test.tsx.snap +1 -1
- package/src/components/FileUpload/__tests__/__snapshots__/FileUploadField.test.tsx.snap +1 -1
- package/src/components/Menu/Menu.tsx +2 -0
- package/src/components/Menu/MenuItem.tsx +61 -28
- package/src/components/Menu/examples/Menu.md +2 -1
- package/src/components/Menu/examples/MenuBasic.tsx +6 -0
- package/src/components/Toolbar/ToolbarChipGroupContent.tsx +4 -1
package/helpers/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-helpers","main":"../dist/js/helpers/index.js","module":"../dist/esm/helpers/index.js","typings":"../dist/esm/helpers/index.d.ts","version":"5.0.0-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-helpers","main":"../dist/js/helpers/index.js","module":"../dist/esm/helpers/index.js","typings":"../dist/esm/helpers/index.d.ts","version":"5.0.0-prerelease.25"}
|
package/layouts/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-layouts","main":"../dist/js/layouts/index.js","module":"../dist/esm/layouts/index.js","typings":"../dist/esm/layouts/index.d.ts","version":"5.0.0-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-layouts","main":"../dist/js/layouts/index.js","module":"../dist/esm/layouts/index.js","typings":"../dist/esm/layouts/index.d.ts","version":"5.0.0-prerelease.25"}
|
package/next/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-next","main":"../dist/js/next/index.js","module":"../dist/esm/next/index.js","typings":"../dist/esm/next/index.d.ts","version":"5.0.0-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-next","main":"../dist/js/next/index.js","module":"../dist/esm/next/index.js","typings":"../dist/esm/next/index.d.ts","version":"5.0.0-prerelease.25"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@patternfly/react-core",
|
|
3
|
-
"version": "5.0.0-prerelease.
|
|
3
|
+
"version": "5.0.0-prerelease.26",
|
|
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",
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
"react": "^17 || ^18",
|
|
72
72
|
"react-dom": "^17 || ^18"
|
|
73
73
|
},
|
|
74
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "3976445d6910dbf63d884bc058f7aea3a0dc8a17"
|
|
75
75
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { css } from '@patternfly/react-styles';
|
|
3
3
|
import { MenuItemProps, MenuItem } from '../Menu';
|
|
4
|
+
import { TooltipProps } from '../Tooltip';
|
|
4
5
|
import { useOUIAProps, OUIAProps } from '../../helpers';
|
|
5
6
|
|
|
6
7
|
/**
|
|
@@ -17,6 +18,8 @@ export interface DropdownItemProps extends Omit<MenuItemProps, 'ref'>, OUIAProps
|
|
|
17
18
|
description?: React.ReactNode;
|
|
18
19
|
/** Render item as disabled option */
|
|
19
20
|
isDisabled?: boolean;
|
|
21
|
+
/** Render item as aria-disabled option */
|
|
22
|
+
isAriaDisabled?: boolean;
|
|
20
23
|
/** Identifies the component in the dropdown onSelect callback */
|
|
21
24
|
value?: any;
|
|
22
25
|
/** Callback for item click */
|
|
@@ -25,6 +28,8 @@ export interface DropdownItemProps extends Omit<MenuItemProps, 'ref'>, OUIAProps
|
|
|
25
28
|
ouiaId?: number | string;
|
|
26
29
|
/** 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
30
|
ouiaSafe?: boolean;
|
|
31
|
+
/** Props for adding a tooltip to a menu item */
|
|
32
|
+
tooltipProps?: TooltipProps;
|
|
28
33
|
}
|
|
29
34
|
|
|
30
35
|
const DropdownItemBase: React.FunctionComponent<DropdownItemProps> = ({
|
|
@@ -32,11 +37,13 @@ const DropdownItemBase: React.FunctionComponent<DropdownItemProps> = ({
|
|
|
32
37
|
className,
|
|
33
38
|
description,
|
|
34
39
|
isDisabled,
|
|
40
|
+
isAriaDisabled,
|
|
35
41
|
value,
|
|
36
42
|
onClick,
|
|
37
43
|
ouiaId,
|
|
38
44
|
ouiaSafe,
|
|
39
45
|
innerRef,
|
|
46
|
+
tooltipProps,
|
|
40
47
|
...props
|
|
41
48
|
}: DropdownItemProps) => {
|
|
42
49
|
const ouiaProps = useOUIAProps(DropdownItem.displayName, ouiaId, ouiaSafe);
|
|
@@ -45,8 +52,10 @@ const DropdownItemBase: React.FunctionComponent<DropdownItemProps> = ({
|
|
|
45
52
|
className={css(className)}
|
|
46
53
|
description={description}
|
|
47
54
|
isDisabled={isDisabled}
|
|
55
|
+
isAriaDisabled={isAriaDisabled}
|
|
48
56
|
itemId={value}
|
|
49
57
|
onClick={onClick}
|
|
58
|
+
tooltipProps={tooltipProps}
|
|
50
59
|
ref={innerRef}
|
|
51
60
|
{...ouiaProps}
|
|
52
61
|
{...props}
|
|
@@ -46,11 +46,14 @@ export const DropdownBasic: React.FunctionComponent = () => {
|
|
|
46
46
|
<DropdownItem value={3} isDisabled key="disabled link" to="#default-link4">
|
|
47
47
|
Disabled Link
|
|
48
48
|
</DropdownItem>
|
|
49
|
+
<DropdownItem value={4} isAriaDisabled key="aria-disabled link" to="#default-link5" tooltipProps={{content: "aria-disabled link", position: "top"}}>
|
|
50
|
+
Aria-disabled Link
|
|
51
|
+
</DropdownItem>
|
|
49
52
|
<Divider component="li" key="separator" />
|
|
50
|
-
<DropdownItem value={
|
|
53
|
+
<DropdownItem value={5} key="separated action">
|
|
51
54
|
Separated Action
|
|
52
55
|
</DropdownItem>
|
|
53
|
-
<DropdownItem value={
|
|
56
|
+
<DropdownItem value={6} key="separated link" to="#default-link6" onClick={(ev) => ev.preventDefault()}>
|
|
54
57
|
Separated Link
|
|
55
58
|
</DropdownItem>
|
|
56
59
|
</DropdownList>
|
|
@@ -132,7 +132,7 @@ export const FileUploadField: React.FunctionComponent<FileUploadFieldProps> = ({
|
|
|
132
132
|
<InputGroup>
|
|
133
133
|
<InputGroupItem isFill>
|
|
134
134
|
<TextInput
|
|
135
|
-
readOnlyVariant="
|
|
135
|
+
readOnlyVariant="default" // Always read-only regardless of isReadOnly prop (which is just for the TextArea)
|
|
136
136
|
isDisabled={isDisabled}
|
|
137
137
|
id={`${id}-filename`}
|
|
138
138
|
name={`${id}-filename`}
|
|
@@ -16,7 +16,7 @@ exports[`simple fileupload 1`] = `
|
|
|
16
16
|
class="pf-v5-c-input-group__item pf-m-fill"
|
|
17
17
|
>
|
|
18
18
|
<span
|
|
19
|
-
class="pf-v5-c-form-control pf-m-readonly
|
|
19
|
+
class="pf-v5-c-form-control pf-m-readonly"
|
|
20
20
|
>
|
|
21
21
|
<input
|
|
22
22
|
aria-describedby="simple-text-file-browse-button"
|
|
@@ -15,7 +15,7 @@ exports[`simple fileuploadfield 1`] = `
|
|
|
15
15
|
class="pf-v5-c-input-group__item pf-m-fill"
|
|
16
16
|
>
|
|
17
17
|
<span
|
|
18
|
-
class="pf-v5-c-form-control pf-m-readonly
|
|
18
|
+
class="pf-v5-c-form-control pf-m-readonly"
|
|
19
19
|
>
|
|
20
20
|
<input
|
|
21
21
|
aria-describedby="custom-file-upload-browse-button"
|
|
@@ -302,6 +302,8 @@ class MenuBase extends React.Component<MenuProps, MenuState> {
|
|
|
302
302
|
(navigableElement?.tagName === 'DIV' && navigableElement.querySelector('input')) || // for MenuSearchInput
|
|
303
303
|
((navigableElement.firstChild as Element)?.tagName === 'LABEL' &&
|
|
304
304
|
navigableElement.querySelector('input')) || // for MenuItem checkboxes
|
|
305
|
+
((navigableElement.firstChild as Element)?.tagName === 'DIV' &&
|
|
306
|
+
navigableElement.querySelector('a, button, input')) || // For aria-disabled element that is rendered inside a div with "display: contents" styling
|
|
305
307
|
(navigableElement.firstChild as Element)
|
|
306
308
|
}
|
|
307
309
|
noHorizontalArrowHandling={
|
|
@@ -11,6 +11,7 @@ import CheckIcon from '@patternfly/react-icons/dist/esm/icons/check-icon';
|
|
|
11
11
|
import { Checkbox } from '../Checkbox';
|
|
12
12
|
import { MenuContext, MenuItemContext } from './MenuContext';
|
|
13
13
|
import { MenuItemAction } from './MenuItemAction';
|
|
14
|
+
import { Tooltip, TooltipProps } from '../Tooltip';
|
|
14
15
|
import { canUseDOM } from '../../helpers/util';
|
|
15
16
|
import { useIsomorphicLayoutEffect } from '../../helpers/useIsomorphicLayout';
|
|
16
17
|
import { GenerateId } from '../../helpers/GenerateId/GenerateId';
|
|
@@ -40,6 +41,10 @@ export interface MenuItemProps extends Omit<React.HTMLProps<HTMLLIElement>, 'onC
|
|
|
40
41
|
component?: React.ElementType<any> | React.ComponentType<any>;
|
|
41
42
|
/** Render item as disabled option */
|
|
42
43
|
isDisabled?: boolean;
|
|
44
|
+
/** Render item as aria-disabled option */
|
|
45
|
+
isAriaDisabled?: boolean;
|
|
46
|
+
/** Props for adding a tooltip to a menu item */
|
|
47
|
+
tooltipProps?: TooltipProps;
|
|
43
48
|
/** Render item with icon */
|
|
44
49
|
icon?: React.ReactNode;
|
|
45
50
|
/** Render item with one or more actions */
|
|
@@ -94,6 +99,7 @@ const MenuItemBase: React.FunctionComponent<MenuItemProps> = ({
|
|
|
94
99
|
onClick = () => {},
|
|
95
100
|
component = 'button',
|
|
96
101
|
isDisabled = false,
|
|
102
|
+
isAriaDisabled = false,
|
|
97
103
|
isExternalLink = false,
|
|
98
104
|
isSelected = null,
|
|
99
105
|
isFocused,
|
|
@@ -106,6 +112,7 @@ const MenuItemBase: React.FunctionComponent<MenuItemProps> = ({
|
|
|
106
112
|
innerRef,
|
|
107
113
|
id,
|
|
108
114
|
'aria-label': ariaLabel,
|
|
115
|
+
tooltipProps,
|
|
109
116
|
...props
|
|
110
117
|
}: MenuItemProps) => {
|
|
111
118
|
const {
|
|
@@ -225,10 +232,12 @@ const MenuItemBase: React.FunctionComponent<MenuItemProps> = ({
|
|
|
225
232
|
};
|
|
226
233
|
|
|
227
234
|
const onItemSelect = (event: any, onSelect: any) => {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
235
|
+
if (!isAriaDisabled) {
|
|
236
|
+
// Trigger callback for Menu onSelect
|
|
237
|
+
onSelect && onSelect(event, itemId);
|
|
238
|
+
// Trigger callback for item onClick
|
|
239
|
+
onClick && onClick(event);
|
|
240
|
+
}
|
|
232
241
|
};
|
|
233
242
|
const _isOnPath = (isOnPath && isOnPath) || (drilldownItemPath && drilldownItemPath.includes(itemId)) || false;
|
|
234
243
|
let drill: (event: React.KeyboardEvent | React.MouseEvent) => void;
|
|
@@ -252,16 +261,18 @@ const MenuItemBase: React.FunctionComponent<MenuItemProps> = ({
|
|
|
252
261
|
if (Component === 'a') {
|
|
253
262
|
additionalProps = {
|
|
254
263
|
href: to,
|
|
255
|
-
'aria-disabled': isDisabled ? true : null,
|
|
264
|
+
'aria-disabled': isDisabled || isAriaDisabled ? true : null,
|
|
256
265
|
// prevent invalid 'disabled' attribute on <a> tags
|
|
257
266
|
disabled: null,
|
|
258
267
|
target: isExternalLink ? '_blank' : null
|
|
259
268
|
};
|
|
260
269
|
} else if (Component === 'button') {
|
|
261
270
|
additionalProps = {
|
|
262
|
-
type: 'button'
|
|
271
|
+
type: 'button',
|
|
272
|
+
'aria-disabled': isAriaDisabled ? true : null
|
|
263
273
|
};
|
|
264
274
|
}
|
|
275
|
+
|
|
265
276
|
if (isOnPath) {
|
|
266
277
|
additionalProps['aria-expanded'] = true;
|
|
267
278
|
} else if (hasFlyout) {
|
|
@@ -300,25 +311,8 @@ const MenuItemBase: React.FunctionComponent<MenuItemProps> = ({
|
|
|
300
311
|
};
|
|
301
312
|
const isSelectMenu = menuRole === 'listbox';
|
|
302
313
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
className={css(
|
|
306
|
-
styles.menuListItem,
|
|
307
|
-
isDisabled && styles.modifiers.disabled,
|
|
308
|
-
_isOnPath && styles.modifiers.currentPath,
|
|
309
|
-
isLoadButton && styles.modifiers.load,
|
|
310
|
-
isLoading && styles.modifiers.loading,
|
|
311
|
-
isFocused && styles.modifiers.focus,
|
|
312
|
-
isDanger && styles.modifiers.danger,
|
|
313
|
-
className
|
|
314
|
-
)}
|
|
315
|
-
onMouseOver={onMouseOver}
|
|
316
|
-
{...(flyoutMenu && { onKeyDown: handleFlyout })}
|
|
317
|
-
ref={ref}
|
|
318
|
-
role={!hasCheckbox ? 'none' : 'menuitem'}
|
|
319
|
-
{...(hasCheckbox && { 'aria-label': ariaLabel })}
|
|
320
|
-
{...props}
|
|
321
|
-
>
|
|
314
|
+
const renderItem = (
|
|
315
|
+
<>
|
|
322
316
|
<GenerateId>
|
|
323
317
|
{(randomId) => (
|
|
324
318
|
<Component
|
|
@@ -332,9 +326,13 @@ const MenuItemBase: React.FunctionComponent<MenuItemProps> = ({
|
|
|
332
326
|
ref={innerRef}
|
|
333
327
|
{...(!hasCheckbox && {
|
|
334
328
|
onClick: (event: React.KeyboardEvent | React.MouseEvent) => {
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
329
|
+
if (!isAriaDisabled) {
|
|
330
|
+
onItemSelect(event, onSelect);
|
|
331
|
+
drill && drill(event);
|
|
332
|
+
flyoutMenu && handleFlyout(event);
|
|
333
|
+
} else {
|
|
334
|
+
event.preventDefault();
|
|
335
|
+
}
|
|
338
336
|
}
|
|
339
337
|
})}
|
|
340
338
|
{...(hasCheckbox && { htmlFor: randomId })}
|
|
@@ -355,6 +353,7 @@ const MenuItemBase: React.FunctionComponent<MenuItemProps> = ({
|
|
|
355
353
|
isChecked={isSelected || false}
|
|
356
354
|
onChange={(event) => onItemSelect(event, onSelect)}
|
|
357
355
|
isDisabled={isDisabled}
|
|
356
|
+
aria-disabled={isAriaDisabled}
|
|
358
357
|
/>
|
|
359
358
|
</span>
|
|
360
359
|
)}
|
|
@@ -402,6 +401,40 @@ const MenuItemBase: React.FunctionComponent<MenuItemProps> = ({
|
|
|
402
401
|
/>
|
|
403
402
|
)}
|
|
404
403
|
</MenuItemContext.Provider>
|
|
404
|
+
</>
|
|
405
|
+
);
|
|
406
|
+
|
|
407
|
+
return (
|
|
408
|
+
<li
|
|
409
|
+
className={css(
|
|
410
|
+
styles.menuListItem,
|
|
411
|
+
isDisabled && styles.modifiers.disabled,
|
|
412
|
+
isAriaDisabled && styles.modifiers.ariaDisabled,
|
|
413
|
+
_isOnPath && styles.modifiers.currentPath,
|
|
414
|
+
isLoadButton && styles.modifiers.load,
|
|
415
|
+
isLoading && styles.modifiers.loading,
|
|
416
|
+
isFocused && styles.modifiers.focus,
|
|
417
|
+
isDanger && styles.modifiers.danger,
|
|
418
|
+
className
|
|
419
|
+
)}
|
|
420
|
+
onMouseOver={() => {
|
|
421
|
+
if (!isAriaDisabled) {
|
|
422
|
+
onMouseOver();
|
|
423
|
+
}
|
|
424
|
+
}}
|
|
425
|
+
{...(flyoutMenu && !isAriaDisabled && { onKeyDown: handleFlyout })}
|
|
426
|
+
ref={ref}
|
|
427
|
+
role={!hasCheckbox ? 'none' : 'menuitem'}
|
|
428
|
+
{...(hasCheckbox && { 'aria-label': ariaLabel })}
|
|
429
|
+
{...props}
|
|
430
|
+
>
|
|
431
|
+
{tooltipProps ? (
|
|
432
|
+
<Tooltip {...tooltipProps}>
|
|
433
|
+
{renderItem}
|
|
434
|
+
</Tooltip>
|
|
435
|
+
) : (
|
|
436
|
+
renderItem
|
|
437
|
+
)}
|
|
405
438
|
</li>
|
|
406
439
|
);
|
|
407
440
|
};
|
|
@@ -33,6 +33,12 @@ export const MenuBasic: React.FunctionComponent = () => {
|
|
|
33
33
|
<MenuItem isDisabled to="#default-link4">
|
|
34
34
|
Disabled link
|
|
35
35
|
</MenuItem>
|
|
36
|
+
<MenuItem isAriaDisabled tooltipProps={{content: "aria-disabled action", position: "top"}}>
|
|
37
|
+
Aria-disabled action
|
|
38
|
+
</MenuItem>
|
|
39
|
+
<MenuItem isAriaDisabled to="#default-link5" tooltipProps={{content: "aria-disabled link", position: "top"}}>
|
|
40
|
+
Aria-disabled link
|
|
41
|
+
</MenuItem>
|
|
36
42
|
</MenuList>
|
|
37
43
|
</MenuContent>
|
|
38
44
|
</Menu>
|
|
@@ -68,11 +68,14 @@ export class ToolbarChipGroupContent extends React.Component<ToolbarChipGroupCon
|
|
|
68
68
|
(canUseDOM ? window.innerWidth : 1200) < globalBreakpoints[collapseListedFiltersBreakpoint];
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
+
const isHidden = numberOfFilters === 0 || isExpanded;
|
|
72
|
+
|
|
71
73
|
return (
|
|
72
74
|
<div
|
|
73
75
|
className={css(
|
|
74
76
|
styles.toolbarContent,
|
|
75
|
-
|
|
77
|
+
!isHidden && !collapseListedFilters && styles.modifiers.chipContainer,
|
|
78
|
+
isHidden && styles.modifiers.hidden,
|
|
76
79
|
className
|
|
77
80
|
)}
|
|
78
81
|
{...((numberOfFilters === 0 || isExpanded) && { hidden: true })}
|