carbon-react 147.10.0 → 148.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/__internal__/checkable-input/checkable-input.component.js +9 -4
- package/esm/__internal__/checkable-input/hidden-checkable-input.component.js +9 -4
- package/esm/__internal__/input/input.component.js +9 -4
- package/esm/__internal__/radio-button-mapper/radio-button-mapper.component.js +1 -1
- package/esm/__internal__/utils/helpers/events/composedPath.d.ts +1 -1
- package/esm/__internal__/utils/helpers/events/events.d.ts +1 -1
- package/esm/components/accordion/accordion.component.js +1 -1
- package/esm/components/action-popover/action-popover-menu/action-popover-menu.component.js +1 -6
- package/esm/components/action-popover/action-popover.component.js +7 -2
- package/esm/components/advanced-color-picker/advanced-color-picker.component.d.ts +2 -2
- package/esm/components/advanced-color-picker/advanced-color-picker.component.js +1 -1
- package/esm/components/anchor-navigation/anchor-navigation.component.js +1 -1
- package/esm/components/box/box.component.js +1 -1
- package/esm/components/breadcrumbs/crumb/crumb.component.d.ts +1 -1
- package/esm/components/breadcrumbs/crumb/crumb.component.js +5 -1
- package/esm/components/breadcrumbs/crumb/crumb.style.d.ts +2 -2
- package/esm/components/button-toggle/button-toggle-group/button-toggle-group.component.js +1 -3
- package/esm/components/checkbox/checkbox.component.js +9 -4
- package/esm/components/content/content.style.js +2 -2
- package/esm/components/date/date.component.js +40 -60
- package/esm/components/decimal/decimal.component.js +10 -5
- package/esm/components/dialog/dialog.component.d.ts +1 -1
- package/esm/components/dialog-full-screen/dialog-full-screen.component.d.ts +1 -1
- package/esm/components/draggable/draggable-container.component.js +4 -1
- package/esm/components/drawer/drawer.component.js +1 -1
- package/esm/components/duelling-picklist/picklist-group/picklist-group.component.js +3 -0
- package/esm/components/grouped-character/grouped-character.component.js +9 -4
- package/esm/components/heading/heading.style.d.ts +1 -1
- package/esm/components/help/help.component.js +1 -1
- package/esm/components/hr/hr.component.d.ts +0 -1
- package/esm/components/image/image.style.d.ts +1 -1
- package/esm/components/link/link.component.d.ts +1 -3
- package/esm/components/link/link.component.js +5 -5
- package/esm/components/link/link.style.js +7 -4
- package/esm/components/loader-star/internal/star.component.d.ts +0 -1
- package/esm/components/loader-star/loader-star.component.d.ts +0 -1
- package/esm/components/menu/__internal__/menu.context.d.ts +1 -0
- package/esm/components/menu/__internal__/submenu/submenu.component.d.ts +1 -1
- package/esm/components/menu/__internal__/submenu/submenu.component.js +14 -37
- package/esm/components/menu/__internal__/submenu/submenu.context.d.ts +1 -2
- package/esm/components/menu/__internal__/submenu/submenu.style.js +0 -11
- package/esm/components/menu/menu-item/menu-item.component.js +39 -46
- package/esm/components/menu/menu-item/menu-item.style.d.ts +2 -2
- package/esm/components/menu/menu-item/menu-item.style.js +65 -83
- package/esm/components/menu/menu.component.js +1 -0
- package/esm/components/modal/modal.component.d.ts +1 -1
- package/esm/components/multi-action-button/multi-action-button.component.js +8 -4
- package/esm/components/number/number.component.js +9 -4
- package/esm/components/pager/pager.component.js +1 -1
- package/esm/components/pager/pager.style.d.ts +1 -1
- package/esm/components/pages/pages.component.js +1 -1
- package/esm/components/popover-container/popover-container.component.d.ts +1 -1
- package/esm/components/portrait/portrait.component.d.ts +2 -1
- package/esm/components/profile/profile.style.d.ts +1 -1
- package/esm/components/radio-button/radio-button.component.js +9 -4
- package/esm/components/radio-button/radio-button.style.d.ts +1 -1
- package/esm/components/search/search.component.js +0 -1
- package/esm/components/select/__internal__/select-list/select-list.component.d.ts +9 -8
- package/esm/components/select/__internal__/select-list/select-list.component.js +34 -66
- package/esm/components/select/__internal__/select-list/select-list.style.js +9 -3
- package/esm/components/select/__internal__/select-textbox/select-textbox.component.d.ts +1 -1
- package/esm/components/select/__internal__/select-textbox/select-textbox.component.js +10 -5
- package/esm/components/select/filterable-select/filterable-select.component.js +16 -13
- package/esm/components/select/multi-select/multi-select.component.js +12 -7
- package/esm/components/select/option/option.component.d.ts +6 -5
- package/esm/components/select/option/option.component.js +10 -5
- package/esm/components/select/option-row/option-row.component.d.ts +2 -2
- package/esm/components/select/simple-select/simple-select.component.d.ts +0 -7
- package/esm/components/select/simple-select/simple-select.component.js +12 -7
- package/esm/components/sidebar/sidebar.component.d.ts +1 -1
- package/esm/components/simple-color-picker/simple-color-picker.component.js +3 -6
- package/esm/components/split-button/split-button.component.js +8 -4
- package/esm/components/step-flow/step-flow.component.js +0 -1
- package/esm/components/switch/switch.component.js +9 -4
- package/esm/components/tabs/__internal__/tab-title/tab-title.component.js +2 -11
- package/esm/components/tabs/tab/tab.component.d.ts +3 -3
- package/esm/components/tabs/tabs.component.js +15 -25
- package/esm/components/text-editor/__internal__/editor-link/editor-link.style.d.ts +1 -1
- package/esm/components/textarea/textarea.component.js +9 -4
- package/esm/components/textbox/textbox.component.js +9 -4
- package/esm/components/tile/flex-tile-cell/flex-tile-cell.component.js +1 -1
- package/esm/components/tile/flex-tile-divider/flex-tile-divider.component.d.ts +0 -1
- package/esm/components/time/time.component.js +0 -1
- package/esm/components/toast/toast.style.d.ts +3 -3
- package/esm/components/typography/typography.style.d.ts +2 -2
- package/esm/components/vertical-divider/vertical-divider.component.d.ts +0 -1
- package/esm/components/vertical-menu/vertical-menu-full-screen/vertical-menu-full-screen.component.d.ts +1 -1
- package/esm/components/vertical-menu/vertical-menu-full-screen/vertical-menu-full-screen.component.js +1 -2
- package/esm/components/vertical-menu/vertical-menu-item/vertical-menu-item.component.d.ts +1 -1
- package/esm/hooks/__internal__/useCharacterCount/useCharacterCount.d.ts +0 -1
- package/esm/hooks/__internal__/useChildButtons/useChildButtons.d.ts +1 -1
- package/esm/hooks/__internal__/useMenuKeyboardNavigation/useMenuKeyboardNavigation.d.ts +1 -1
- package/esm/hooks/__internal__/useMenuKeyboardNavigation/useMenuKeyboardNavigation.js +2 -2
- package/esm/hooks/__internal__/useStableCallback/useStableCallback.d.ts +1 -1
- package/lib/__internal__/checkable-input/checkable-input.component.js +9 -4
- package/lib/__internal__/checkable-input/hidden-checkable-input.component.js +9 -4
- package/lib/__internal__/input/input.component.js +9 -4
- package/lib/__internal__/radio-button-mapper/radio-button-mapper.component.js +1 -1
- package/lib/__internal__/utils/helpers/events/composedPath.d.ts +1 -1
- package/lib/__internal__/utils/helpers/events/events.d.ts +1 -1
- package/lib/components/accordion/accordion.component.js +1 -1
- package/lib/components/action-popover/action-popover-menu/action-popover-menu.component.js +1 -6
- package/lib/components/action-popover/action-popover.component.js +7 -2
- package/lib/components/advanced-color-picker/advanced-color-picker.component.d.ts +2 -2
- package/lib/components/advanced-color-picker/advanced-color-picker.component.js +1 -1
- package/lib/components/anchor-navigation/anchor-navigation.component.js +1 -1
- package/lib/components/box/box.component.js +1 -1
- package/lib/components/breadcrumbs/crumb/crumb.component.d.ts +1 -1
- package/lib/components/breadcrumbs/crumb/crumb.component.js +5 -1
- package/lib/components/breadcrumbs/crumb/crumb.style.d.ts +2 -2
- package/lib/components/button-toggle/button-toggle-group/button-toggle-group.component.js +1 -3
- package/lib/components/checkbox/checkbox.component.js +9 -4
- package/lib/components/content/content.style.js +2 -2
- package/lib/components/date/date.component.js +40 -60
- package/lib/components/decimal/decimal.component.js +10 -5
- package/lib/components/dialog/dialog.component.d.ts +1 -1
- package/lib/components/dialog-full-screen/dialog-full-screen.component.d.ts +1 -1
- package/lib/components/draggable/draggable-container.component.js +4 -1
- package/lib/components/drawer/drawer.component.js +1 -1
- package/lib/components/duelling-picklist/picklist-group/picklist-group.component.js +3 -0
- package/lib/components/grouped-character/grouped-character.component.js +9 -4
- package/lib/components/heading/heading.style.d.ts +1 -1
- package/lib/components/help/help.component.js +1 -1
- package/lib/components/hr/hr.component.d.ts +0 -1
- package/lib/components/image/image.style.d.ts +1 -1
- package/lib/components/link/link.component.d.ts +1 -3
- package/lib/components/link/link.component.js +5 -5
- package/lib/components/link/link.style.js +7 -4
- package/lib/components/loader-star/internal/star.component.d.ts +0 -1
- package/lib/components/loader-star/loader-star.component.d.ts +0 -1
- package/lib/components/menu/__internal__/menu.context.d.ts +1 -0
- package/lib/components/menu/__internal__/submenu/submenu.component.d.ts +1 -1
- package/lib/components/menu/__internal__/submenu/submenu.component.js +14 -37
- package/lib/components/menu/__internal__/submenu/submenu.context.d.ts +1 -2
- package/lib/components/menu/__internal__/submenu/submenu.style.js +0 -11
- package/lib/components/menu/menu-item/menu-item.component.js +38 -45
- package/lib/components/menu/menu-item/menu-item.style.d.ts +2 -2
- package/lib/components/menu/menu-item/menu-item.style.js +65 -83
- package/lib/components/menu/menu.component.js +1 -0
- package/lib/components/modal/modal.component.d.ts +1 -1
- package/lib/components/multi-action-button/multi-action-button.component.js +8 -4
- package/lib/components/number/number.component.js +9 -4
- package/lib/components/pager/pager.component.js +1 -1
- package/lib/components/pager/pager.style.d.ts +1 -1
- package/lib/components/pages/pages.component.js +1 -1
- package/lib/components/popover-container/popover-container.component.d.ts +1 -1
- package/lib/components/portrait/portrait.component.d.ts +2 -1
- package/lib/components/profile/profile.style.d.ts +1 -1
- package/lib/components/radio-button/radio-button.component.js +9 -4
- package/lib/components/radio-button/radio-button.style.d.ts +1 -1
- package/lib/components/search/search.component.js +0 -1
- package/lib/components/select/__internal__/select-list/select-list.component.d.ts +9 -8
- package/lib/components/select/__internal__/select-list/select-list.component.js +34 -66
- package/lib/components/select/__internal__/select-list/select-list.style.js +9 -3
- package/lib/components/select/__internal__/select-textbox/select-textbox.component.d.ts +1 -1
- package/lib/components/select/__internal__/select-textbox/select-textbox.component.js +10 -5
- package/lib/components/select/filterable-select/filterable-select.component.js +16 -13
- package/lib/components/select/multi-select/multi-select.component.js +12 -7
- package/lib/components/select/option/option.component.d.ts +6 -5
- package/lib/components/select/option/option.component.js +10 -5
- package/lib/components/select/option-row/option-row.component.d.ts +2 -2
- package/lib/components/select/simple-select/simple-select.component.d.ts +0 -7
- package/lib/components/select/simple-select/simple-select.component.js +12 -7
- package/lib/components/sidebar/sidebar.component.d.ts +1 -1
- package/lib/components/simple-color-picker/simple-color-picker.component.js +3 -6
- package/lib/components/split-button/split-button.component.js +8 -4
- package/lib/components/step-flow/step-flow.component.js +0 -1
- package/lib/components/switch/switch.component.js +9 -4
- package/lib/components/tabs/__internal__/tab-title/tab-title.component.js +2 -11
- package/lib/components/tabs/tab/tab.component.d.ts +3 -3
- package/lib/components/tabs/tabs.component.js +15 -25
- package/lib/components/text-editor/__internal__/editor-link/editor-link.style.d.ts +1 -1
- package/lib/components/textarea/textarea.component.js +9 -4
- package/lib/components/textbox/textbox.component.js +9 -4
- package/lib/components/tile/flex-tile-cell/flex-tile-cell.component.js +1 -1
- package/lib/components/tile/flex-tile-divider/flex-tile-divider.component.d.ts +0 -1
- package/lib/components/time/time.component.js +0 -1
- package/lib/components/toast/toast.style.d.ts +3 -3
- package/lib/components/typography/typography.style.d.ts +2 -2
- package/lib/components/vertical-divider/vertical-divider.component.d.ts +0 -1
- package/lib/components/vertical-menu/vertical-menu-full-screen/vertical-menu-full-screen.component.d.ts +1 -1
- package/lib/components/vertical-menu/vertical-menu-full-screen/vertical-menu-full-screen.component.js +1 -2
- package/lib/components/vertical-menu/vertical-menu-item/vertical-menu-item.component.d.ts +1 -1
- package/lib/hooks/__internal__/useCharacterCount/useCharacterCount.d.ts +0 -1
- package/lib/hooks/__internal__/useChildButtons/useChildButtons.d.ts +1 -1
- package/lib/hooks/__internal__/useMenuKeyboardNavigation/useMenuKeyboardNavigation.d.ts +1 -1
- package/lib/hooks/__internal__/useMenuKeyboardNavigation/useMenuKeyboardNavigation.js +2 -2
- package/lib/hooks/__internal__/useStableCallback/useStableCallback.d.ts +1 -1
- package/package.json +31 -36
|
@@ -95,7 +95,7 @@ exports.Help = Help;
|
|
|
95
95
|
if (process.env.NODE_ENV !== "production") {
|
|
96
96
|
Help.propTypes = {
|
|
97
97
|
"ariaLabel": _propTypes.default.string,
|
|
98
|
-
"as": _propTypes.default.oneOf(["a", "abbr", "address", "animate", "animateMotion", "animateTransform", "area", "article", "aside", "audio", "b", "base", "bdi", "bdo", "big", "blockquote", "body", "br", "button", "canvas", "caption", "circle", "cite", "clipPath", "code", "col", "colgroup", "data", "datalist", "dd", "defs", "del", "desc", "details", "dfn", "dialog", "div", "dl", "dt", "ellipse", "em", "embed", "feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feDropShadow", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence", "fieldset", "figcaption", "figure", "filter", "footer", "foreignObject", "form", "g", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "i", "iframe", "image", "img", "input", "ins", "kbd", "keygen", "label", "legend", "li", "line", "linearGradient", "link", "main", "map", "mark", "marker", "mask", "menu", "menuitem", "meta", "metadata", "meter", "mpath", "nav", "noindex", "noscript", "object", "ol", "optgroup", "option", "output", "p", "param", "path", "pattern", "picture", "polygon", "polyline", "pre", "progress", "q", "radialGradient", "rect", "rp", "rt", "ruby", "s", "samp", "script", "section", "select", "slot", "small", "source", "span", "stop", "strong", "style", "sub", "summary", "sup", "svg", "switch", "symbol", "table", "tbody", "td", "template", "text", "textarea", "textPath", "tfoot", "th", "thead", "time", "title", "tr", "track", "tspan", "u", "ul", "use", "var", "video", "view", "wbr", "webview"]),
|
|
98
|
+
"as": _propTypes.default.oneOf(["a", "abbr", "address", "animate", "animateMotion", "animateTransform", "area", "article", "aside", "audio", "b", "base", "bdi", "bdo", "big", "blockquote", "body", "br", "button", "canvas", "caption", "center", "circle", "cite", "clipPath", "code", "col", "colgroup", "data", "datalist", "dd", "defs", "del", "desc", "details", "dfn", "dialog", "div", "dl", "dt", "ellipse", "em", "embed", "feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feDropShadow", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence", "fieldset", "figcaption", "figure", "filter", "footer", "foreignObject", "form", "g", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "i", "iframe", "image", "img", "input", "ins", "kbd", "keygen", "label", "legend", "li", "line", "linearGradient", "link", "main", "map", "mark", "marker", "mask", "menu", "menuitem", "meta", "metadata", "meter", "mpath", "nav", "noindex", "noscript", "object", "ol", "optgroup", "option", "output", "p", "param", "path", "pattern", "picture", "polygon", "polyline", "pre", "progress", "q", "radialGradient", "rect", "rp", "rt", "ruby", "s", "samp", "script", "search", "section", "select", "set", "slot", "small", "source", "span", "stop", "strong", "style", "sub", "summary", "sup", "svg", "switch", "symbol", "table", "tbody", "td", "template", "text", "textarea", "textPath", "tfoot", "th", "thead", "time", "title", "tr", "track", "tspan", "u", "ul", "use", "var", "video", "view", "wbr", "webview"]),
|
|
99
99
|
"children": _propTypes.default.node,
|
|
100
100
|
"helpId": _propTypes.default.string,
|
|
101
101
|
"href": _propTypes.default.string,
|
|
@@ -33,5 +33,5 @@ declare const StyledImage: import("styled-components").StyledComponent<"div", an
|
|
|
33
33
|
bottom: string | undefined;
|
|
34
34
|
left: string | undefined;
|
|
35
35
|
as?: string | undefined;
|
|
36
|
-
} & StyledImageProps, "hidden" | "children" | "
|
|
36
|
+
} & StyledImageProps, "hidden" | "children" | "left" | "right" | "top" | "bottom" | "src" | "as" | "position">;
|
|
37
37
|
export { StyledImage };
|
|
@@ -24,8 +24,6 @@ export interface LinkProps extends StyledLinkProps, React.AriaAttributes {
|
|
|
24
24
|
ariaLabel?: string;
|
|
25
25
|
/** allows to set rel property in <a> tag */
|
|
26
26
|
rel?: string;
|
|
27
|
-
/** @ignore @private internal prop to be set when no href or onClick passed */
|
|
28
|
-
placeholderTabIndex?: boolean;
|
|
29
27
|
/** @ignore @private internal prop to be set when no aria-label should be specified */
|
|
30
28
|
removeAriaLabelOnIcon?: boolean;
|
|
31
29
|
/**
|
|
@@ -35,5 +33,5 @@ export interface LinkProps extends StyledLinkProps, React.AriaAttributes {
|
|
|
35
33
|
* Sets className for component. INTERNAL USE ONLY. */
|
|
36
34
|
className?: string;
|
|
37
35
|
}
|
|
38
|
-
export declare const Link: React.ForwardRefExoticComponent<LinkProps & React.RefAttributes<
|
|
36
|
+
export declare const Link: React.ForwardRefExoticComponent<LinkProps & React.RefAttributes<HTMLAnchorElement | HTMLButtonElement>>;
|
|
39
37
|
export default Link;
|
|
@@ -33,7 +33,6 @@ const Link = exports.Link = /*#__PURE__*/_react.default.forwardRef(({
|
|
|
33
33
|
target,
|
|
34
34
|
variant = "default",
|
|
35
35
|
isDarkBackground,
|
|
36
|
-
placeholderTabIndex,
|
|
37
36
|
removeAriaLabelOnIcon,
|
|
38
37
|
className,
|
|
39
38
|
...rest
|
|
@@ -91,9 +90,6 @@ const Link = exports.Link = /*#__PURE__*/_react.default.forwardRef(({
|
|
|
91
90
|
...buttonProps
|
|
92
91
|
} : {
|
|
93
92
|
...componentProps,
|
|
94
|
-
...(placeholderTabIndex && href === undefined && !onClick && {
|
|
95
|
-
tabIndex: -1
|
|
96
|
-
}),
|
|
97
93
|
"data-role": "link-anchor"
|
|
98
94
|
}, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, renderLinkIcon(), /*#__PURE__*/_react.default.createElement(_link.StyledContent, null, isSkipLink ? l.link.skipLinkLabel() : children), renderLinkIcon("right")));
|
|
99
95
|
};
|
|
@@ -122,14 +118,18 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
122
118
|
"aria-activedescendant": _propTypes.default.string,
|
|
123
119
|
"aria-atomic": _propTypes.default.oneOfType([_propTypes.default.oneOf(["false", "true"]), _propTypes.default.bool]),
|
|
124
120
|
"aria-autocomplete": _propTypes.default.oneOf(["both", "inline", "list", "none"]),
|
|
121
|
+
"aria-braillelabel": _propTypes.default.string,
|
|
122
|
+
"aria-brailleroledescription": _propTypes.default.string,
|
|
125
123
|
"aria-busy": _propTypes.default.oneOfType([_propTypes.default.oneOf(["false", "true"]), _propTypes.default.bool]),
|
|
126
124
|
"aria-checked": _propTypes.default.oneOfType([_propTypes.default.oneOf(["false", "mixed", "true"]), _propTypes.default.bool]),
|
|
127
125
|
"aria-colcount": _propTypes.default.number,
|
|
128
126
|
"aria-colindex": _propTypes.default.number,
|
|
127
|
+
"aria-colindextext": _propTypes.default.string,
|
|
129
128
|
"aria-colspan": _propTypes.default.number,
|
|
130
129
|
"aria-controls": _propTypes.default.string,
|
|
131
130
|
"aria-current": _propTypes.default.oneOfType([_propTypes.default.oneOf(["date", "false", "location", "page", "step", "time", "true"]), _propTypes.default.bool]),
|
|
132
131
|
"aria-describedby": _propTypes.default.string,
|
|
132
|
+
"aria-description": _propTypes.default.string,
|
|
133
133
|
"aria-details": _propTypes.default.string,
|
|
134
134
|
"aria-disabled": _propTypes.default.oneOfType([_propTypes.default.oneOf(["false", "true"]), _propTypes.default.bool]),
|
|
135
135
|
"aria-dropeffect": _propTypes.default.oneOf(["copy", "execute", "link", "move", "none", "popup"]),
|
|
@@ -159,6 +159,7 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
159
159
|
"aria-roledescription": _propTypes.default.string,
|
|
160
160
|
"aria-rowcount": _propTypes.default.number,
|
|
161
161
|
"aria-rowindex": _propTypes.default.number,
|
|
162
|
+
"aria-rowindextext": _propTypes.default.string,
|
|
162
163
|
"aria-rowspan": _propTypes.default.number,
|
|
163
164
|
"aria-selected": _propTypes.default.oneOfType([_propTypes.default.oneOf(["false", "true"]), _propTypes.default.bool]),
|
|
164
165
|
"aria-setsize": _propTypes.default.number,
|
|
@@ -180,7 +181,6 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
180
181
|
"onClick": _propTypes.default.func,
|
|
181
182
|
"onKeyDown": _propTypes.default.func,
|
|
182
183
|
"onMouseDown": _propTypes.default.func,
|
|
183
|
-
"placeholderTabIndex": _propTypes.default.bool,
|
|
184
184
|
"rel": _propTypes.default.string,
|
|
185
185
|
"removeAriaLabelOnIcon": _propTypes.default.bool,
|
|
186
186
|
"target": _propTypes.default.string,
|
|
@@ -138,6 +138,13 @@ const StyledLink = exports.StyledLink = _styledComponents.default.span`
|
|
|
138
138
|
}
|
|
139
139
|
`}
|
|
140
140
|
|
|
141
|
+
${!disabled && (0, _styledComponents.css)`
|
|
142
|
+
> a:any-link:hover,
|
|
143
|
+
> button:hover {
|
|
144
|
+
cursor: pointer;
|
|
145
|
+
}
|
|
146
|
+
`}
|
|
147
|
+
|
|
141
148
|
> a,
|
|
142
149
|
> button {
|
|
143
150
|
text-decoration: ${hasContent ? "underline" : "none"};
|
|
@@ -156,10 +163,6 @@ const StyledLink = exports.StyledLink = _styledComponents.default.span`
|
|
|
156
163
|
`}
|
|
157
164
|
}
|
|
158
165
|
|
|
159
|
-
&:hover {
|
|
160
|
-
cursor: pointer;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
166
|
&:focus {
|
|
164
167
|
color: var(--colorsActionMajorYin090);
|
|
165
168
|
outline: none;
|
|
@@ -9,6 +9,7 @@ export interface MenuContextProps {
|
|
|
9
9
|
registerItem?: (id: string) => void;
|
|
10
10
|
unregisterItem?: (id: string) => void;
|
|
11
11
|
focusId?: string;
|
|
12
|
+
updateFocusId?: (id: string) => void;
|
|
12
13
|
}
|
|
13
14
|
declare const _default: React.Context<MenuContextProps>;
|
|
14
15
|
export default _default;
|
|
@@ -41,5 +41,5 @@ export interface SubmenuProps {
|
|
|
41
41
|
/** Sets the max-width of the submenu container element */
|
|
42
42
|
submenuMaxWidth?: string;
|
|
43
43
|
}
|
|
44
|
-
declare const Submenu: React.ForwardRefExoticComponent<SubmenuProps & React.RefAttributes<HTMLAnchorElement
|
|
44
|
+
declare const Submenu: React.ForwardRefExoticComponent<SubmenuProps & React.RefAttributes<HTMLAnchorElement>>;
|
|
45
45
|
export default Submenu;
|
|
@@ -12,11 +12,11 @@ var _events = _interopRequireDefault(require("../../../../__internal__/utils/hel
|
|
|
12
12
|
var _menu = _interopRequireDefault(require("../menu.context"));
|
|
13
13
|
var _keyboardNavigation = require("../keyboard-navigation");
|
|
14
14
|
var _submenu2 = _interopRequireDefault(require("./submenu.context"));
|
|
15
|
-
var _useClickAwayListener = _interopRequireDefault(require("../../../../hooks/__internal__/useClickAwayListener"));
|
|
16
15
|
var _guid = _interopRequireDefault(require("../../../../__internal__/utils/helpers/guid"));
|
|
17
16
|
var _locators = require("../locators");
|
|
18
17
|
var _useStableCallback = _interopRequireDefault(require("../../../../hooks/__internal__/useStableCallback/useStableCallback"));
|
|
19
18
|
var _fixedNavigationBar = _interopRequireDefault(require("../../../navigation-bar/__internal__/fixed-navigation-bar.context"));
|
|
19
|
+
var _focusTrapUtils = require("../../../../__internal__/focus-trap/focus-trap-utils");
|
|
20
20
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
21
21
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
22
22
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
@@ -55,7 +55,6 @@ const Submenu = /*#__PURE__*/_react.default.forwardRef(({
|
|
|
55
55
|
const [characterString, setCharacterString] = (0, _react.useState)("");
|
|
56
56
|
const [applyFocusRadius, setApplyFocusRadius] = (0, _react.useState)(false);
|
|
57
57
|
const [applyFocusRadiusToLastItem, setApplyFocusRadiusToLastItem] = (0, _react.useState)(false);
|
|
58
|
-
const shiftTabPressed = (0, _react.useRef)(false);
|
|
59
58
|
const focusFirstMenuItemOnOpen = (0, _react.useRef)(false);
|
|
60
59
|
const numberOfChildren = submenuItemIds.length;
|
|
61
60
|
const {
|
|
@@ -146,7 +145,6 @@ const Submenu = /*#__PURE__*/_react.default.forwardRef(({
|
|
|
146
145
|
}
|
|
147
146
|
}, [submenuOpen, onSubmenuOpen]);
|
|
148
147
|
const closeSubmenu = (0, _react.useCallback)(() => {
|
|
149
|
-
shiftTabPressed.current = false;
|
|
150
148
|
setSubmenuOpen(false);
|
|
151
149
|
setSubmenuFocusId(null);
|
|
152
150
|
if (onSubmenuClose) {
|
|
@@ -175,38 +173,20 @@ const Submenu = /*#__PURE__*/_react.default.forwardRef(({
|
|
|
175
173
|
const index = findCurrentIndex(submenuFocusId);
|
|
176
174
|
let nextIndex = index;
|
|
177
175
|
if (href && !submenuFocusId) {
|
|
178
|
-
if (_events.default.isDownKey(event) || _events.default.isUpKey(event)
|
|
176
|
+
if (_events.default.isDownKey(event) || _events.default.isUpKey(event)) {
|
|
179
177
|
event.preventDefault();
|
|
180
178
|
setSubmenuFocusId(submenuItemIds[0]);
|
|
181
179
|
return;
|
|
182
180
|
}
|
|
183
181
|
}
|
|
184
|
-
if (_events.default.isTabKey(event) && !_events.default.isShiftKey(event)) {
|
|
185
|
-
if (nextIndex === numberOfChildren - 1) {
|
|
186
|
-
closeSubmenu();
|
|
187
|
-
return;
|
|
188
|
-
}
|
|
189
|
-
shiftTabPressed.current = false;
|
|
190
|
-
nextIndex += 1;
|
|
191
|
-
}
|
|
192
|
-
if (_events.default.isTabKey(event) && _events.default.isShiftKey(event)) {
|
|
193
|
-
if (nextIndex <= 0) {
|
|
194
|
-
closeSubmenu();
|
|
195
|
-
return;
|
|
196
|
-
}
|
|
197
|
-
shiftTabPressed.current = true;
|
|
198
|
-
nextIndex -= 1;
|
|
199
|
-
}
|
|
200
182
|
if (_events.default.isDownKey(event)) {
|
|
201
183
|
event.preventDefault();
|
|
202
|
-
shiftTabPressed.current = false;
|
|
203
184
|
if (nextIndex < numberOfChildren - 1) {
|
|
204
185
|
nextIndex += 1;
|
|
205
186
|
}
|
|
206
187
|
}
|
|
207
188
|
if (_events.default.isUpKey(event)) {
|
|
208
189
|
event.preventDefault();
|
|
209
|
-
shiftTabPressed.current = false;
|
|
210
190
|
setApplyFocusRadius(false);
|
|
211
191
|
if (nextIndex > 0) {
|
|
212
192
|
nextIndex -= 1;
|
|
@@ -219,17 +199,16 @@ const Submenu = /*#__PURE__*/_react.default.forwardRef(({
|
|
|
219
199
|
}
|
|
220
200
|
if (_events.default.isHomeKey(event)) {
|
|
221
201
|
event.preventDefault();
|
|
222
|
-
|
|
202
|
+
event.stopPropagation();
|
|
223
203
|
nextIndex = 0;
|
|
224
204
|
}
|
|
225
205
|
if (_events.default.isEndKey(event)) {
|
|
226
206
|
event.preventDefault();
|
|
227
|
-
|
|
207
|
+
event.stopPropagation();
|
|
228
208
|
nextIndex = numberOfChildren - 1;
|
|
229
209
|
}
|
|
230
210
|
if (event.key.length === 1) {
|
|
231
211
|
event.stopPropagation();
|
|
232
|
-
shiftTabPressed.current = false;
|
|
233
212
|
if (characterTimer.current) {
|
|
234
213
|
restartCharacterTimeout();
|
|
235
214
|
} else {
|
|
@@ -239,7 +218,7 @@ const Submenu = /*#__PURE__*/_react.default.forwardRef(({
|
|
|
239
218
|
} else {
|
|
240
219
|
setCharacterString("");
|
|
241
220
|
}
|
|
242
|
-
const eventIsFromInput = _events.default.composedPath(event).find(p => p.getAttribute("data-element") === "input" || p.getAttribute("data-element") === "input-icon-toggle");
|
|
221
|
+
const eventIsFromInput = _events.default.composedPath(event.nativeEvent).find(p => p instanceof HTMLElement && (p.getAttribute("data-element") === "input" || p.getAttribute("data-element") === "input-icon-toggle"));
|
|
243
222
|
if (!eventIsFromInput) {
|
|
244
223
|
if (_events.default.isEnterKey(event)) {
|
|
245
224
|
/* timeout enforces that the "closeSubmenu" method will be run after
|
|
@@ -259,7 +238,7 @@ const Submenu = /*#__PURE__*/_react.default.forwardRef(({
|
|
|
259
238
|
|
|
260
239
|
/* istanbul ignore else */
|
|
261
240
|
if (items) {
|
|
262
|
-
setSubmenuItemIds(Array.from(items).map(item => item.getAttribute("id")));
|
|
241
|
+
setSubmenuItemIds(Array.from(items).filter(item => item.querySelector(_focusTrapUtils.defaultFocusableSelectors)).map(item => item.getAttribute("id")));
|
|
263
242
|
}
|
|
264
243
|
}
|
|
265
244
|
}, [children, submenuOpen, submenuRef]);
|
|
@@ -269,11 +248,6 @@ const Submenu = /*#__PURE__*/_react.default.forwardRef(({
|
|
|
269
248
|
setSubmenuFocusId(submenuItemIds[0]);
|
|
270
249
|
}
|
|
271
250
|
}, [submenuOpen, submenuFocusId, submenuItemIds]);
|
|
272
|
-
const handleClickAway = () => {
|
|
273
|
-
document.removeEventListener("click", handleClickAway);
|
|
274
|
-
closeSubmenu();
|
|
275
|
-
};
|
|
276
|
-
const handleClickInside = (0, _useClickAwayListener.default)(handleClickAway);
|
|
277
251
|
const handleClick = event => {
|
|
278
252
|
openSubmenu();
|
|
279
253
|
if (onClick) {
|
|
@@ -290,13 +264,17 @@ const Submenu = /*#__PURE__*/_react.default.forwardRef(({
|
|
|
290
264
|
}
|
|
291
265
|
}
|
|
292
266
|
}, [submenuRef, characterString, submenuItemIds]);
|
|
267
|
+
const handleSubmenuBlur = event => {
|
|
268
|
+
if (!event.currentTarget.contains(event.relatedTarget)) {
|
|
269
|
+
closeSubmenu();
|
|
270
|
+
}
|
|
271
|
+
};
|
|
293
272
|
if (inFullscreenView) {
|
|
294
273
|
return /*#__PURE__*/_react.default.createElement(_submenu.StyledSubmenuWrapper, {
|
|
295
274
|
"data-component": "submenu-wrapper",
|
|
296
275
|
inFullscreenView: inFullscreenView,
|
|
297
276
|
asPassiveItem: asPassiveItem,
|
|
298
|
-
menuType: menuContext.menuType
|
|
299
|
-
onClick: handleClickInside
|
|
277
|
+
menuType: menuContext.menuType
|
|
300
278
|
}, /*#__PURE__*/_react.default.createElement(_menuItem.default, _extends({}, rest, {
|
|
301
279
|
onClick: asPassiveItem ? undefined : onClick,
|
|
302
280
|
className: className,
|
|
@@ -328,7 +306,6 @@ const Submenu = /*#__PURE__*/_react.default.forwardRef(({
|
|
|
328
306
|
onMouseOver: !clickToOpen ? () => openSubmenu() : undefined,
|
|
329
307
|
onMouseLeave: () => closeSubmenu(),
|
|
330
308
|
isSubmenuOpen: submenuOpen,
|
|
331
|
-
onClick: handleClickInside,
|
|
332
309
|
ref: setSubmenuRef
|
|
333
310
|
}, /*#__PURE__*/_react.default.createElement(_menuItem.default, _extends({}, rest, {
|
|
334
311
|
className: className,
|
|
@@ -356,14 +333,14 @@ const Submenu = /*#__PURE__*/_react.default.forwardRef(({
|
|
|
356
333
|
maxHeight: submenuMaxHeight,
|
|
357
334
|
applyFocusRadiusStyling: applyFocusRadius,
|
|
358
335
|
applyFocusRadiusStylingToLastItem: applyFocusRadiusToLastItem,
|
|
359
|
-
submenuMaxWidth: submenuMaxWidth
|
|
336
|
+
submenuMaxWidth: submenuMaxWidth,
|
|
337
|
+
onBlur: handleSubmenuBlur
|
|
360
338
|
}, /*#__PURE__*/_react.default.createElement(_submenu2.default.Provider, {
|
|
361
339
|
value: {
|
|
362
340
|
submenuFocusId,
|
|
363
341
|
handleKeyDown,
|
|
364
342
|
blockIndex,
|
|
365
343
|
updateFocusId: setSubmenuFocusId,
|
|
366
|
-
shiftTabPressed: shiftTabPressed.current,
|
|
367
344
|
submenuHasMaxWidth: !!submenuMaxWidth
|
|
368
345
|
}
|
|
369
346
|
}, children)));
|
|
@@ -2,8 +2,7 @@ import React from "react";
|
|
|
2
2
|
export interface SubmenuContextProps {
|
|
3
3
|
submenuFocusId?: string | null;
|
|
4
4
|
updateFocusId?: (id: string) => void;
|
|
5
|
-
handleKeyDown?: (event: React.KeyboardEvent<HTMLAnchorElement>) => void;
|
|
6
|
-
shiftTabPressed?: boolean;
|
|
5
|
+
handleKeyDown?: (event: React.KeyboardEvent<HTMLAnchorElement> | React.KeyboardEvent<HTMLButtonElement>) => void;
|
|
7
6
|
blockIndex?: number;
|
|
8
7
|
submenuHasMaxWidth?: boolean;
|
|
9
8
|
}
|
|
@@ -158,7 +158,6 @@ const StyledSubmenu = exports.StyledSubmenu = _styledComponents.default.ul`
|
|
|
158
158
|
display: flex;
|
|
159
159
|
align-items: center;
|
|
160
160
|
white-space: nowrap;
|
|
161
|
-
cursor: pointer;
|
|
162
161
|
|
|
163
162
|
${inFullscreenView && (0, _styledComponents.css)`
|
|
164
163
|
white-space: normal;
|
|
@@ -178,16 +177,6 @@ const StyledSubmenu = exports.StyledSubmenu = _styledComponents.default.ul`
|
|
|
178
177
|
background-color: ${_menu2.default[menuType].submenuItemBackground};
|
|
179
178
|
}
|
|
180
179
|
|
|
181
|
-
> a:hover,
|
|
182
|
-
> button:hover {
|
|
183
|
-
background-color: transparent;
|
|
184
|
-
color: var(--colorsComponentsMenuYang100);
|
|
185
|
-
|
|
186
|
-
> [data-component="icon"] {
|
|
187
|
-
color: var(--colorsComponentsMenuYang100);
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
|
|
191
180
|
> a,
|
|
192
181
|
> button {
|
|
193
182
|
padding: 11px 16px 12px;
|
|
@@ -7,6 +7,7 @@ exports.default = exports.MenuItem = void 0;
|
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
9
|
var _invariant = _interopRequireDefault(require("invariant"));
|
|
10
|
+
var _focusTrapUtils = require("../../../__internal__/focus-trap/focus-trap-utils");
|
|
10
11
|
var _utils = require("../../../style/utils");
|
|
11
12
|
var _menuItem = _interopRequireDefault(require("./menu-item.style"));
|
|
12
13
|
var _events = _interopRequireDefault(require("../../../__internal__/utils/helpers/events"));
|
|
@@ -48,6 +49,7 @@ const MenuItem = ({
|
|
|
48
49
|
!(icon || children) ? process.env.NODE_ENV !== "production" ? (0, _invariant.default)(false, "Either prop `icon` must be defined or this node must have `children`.") : (0, _invariant.default)(false) : void 0;
|
|
49
50
|
!(children || ariaLabel || typeof submenu === "string") ? process.env.NODE_ENV !== "production" ? (0, _invariant.default)(false, "If no text is provided an `ariaLabel` should be given to facilitate accessibility.") : (0, _invariant.default)(false) : void 0;
|
|
50
51
|
!(typeof submenu === "boolean" || submenu === undefined || children && typeof submenu === "string" && submenu.length) ? process.env.NODE_ENV !== "production" ? (0, _invariant.default)(false, "You should not pass `children` when `submenu` is an empty string") : (0, _invariant.default)(false) : void 0;
|
|
52
|
+
const menuItemId = (0, _react.useRef)((0, _guid.default)());
|
|
51
53
|
const {
|
|
52
54
|
isChildOfSegment,
|
|
53
55
|
overriddenVariant
|
|
@@ -57,24 +59,21 @@ const MenuItem = ({
|
|
|
57
59
|
registerItem,
|
|
58
60
|
unregisterItem,
|
|
59
61
|
focusId,
|
|
60
|
-
|
|
61
|
-
|
|
62
|
+
updateFocusId,
|
|
63
|
+
menuType
|
|
62
64
|
} = (0, _react.useContext)(_menu.default);
|
|
63
|
-
const menuItemId = (0, _react.useRef)((0, _guid.default)());
|
|
64
65
|
const submenuContext = (0, _react.useContext)(_submenu2.default);
|
|
66
|
+
const isInSubmenu = Object.keys(submenuContext).length > 0;
|
|
65
67
|
const {
|
|
66
68
|
submenuFocusId,
|
|
67
69
|
updateFocusId: updateSubmenuFocusId,
|
|
68
70
|
handleKeyDown: handleSubmenuKeyDown,
|
|
69
|
-
shiftTabPressed,
|
|
70
71
|
submenuHasMaxWidth
|
|
71
72
|
} = submenuContext;
|
|
72
|
-
const ref = (0, _react.useRef)(null);
|
|
73
73
|
const focusFromMenu = focusId === menuItemId.current;
|
|
74
74
|
const focusFromSubmenu = submenuFocusId ? submenuFocusId === menuItemId.current : undefined;
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
const focusRef = inputRef.current ? inputRef : ref;
|
|
75
|
+
const ref = (0, _react.useRef)(null);
|
|
76
|
+
const firstFocusableChild = ref.current?.querySelector(_focusTrapUtils.defaultFocusableSelectors) ?? null;
|
|
78
77
|
(0, _react.useEffect)(() => {
|
|
79
78
|
const id = menuItemId.current;
|
|
80
79
|
|
|
@@ -90,41 +89,35 @@ const MenuItem = ({
|
|
|
90
89
|
};
|
|
91
90
|
}, [registerItem, unregisterItem]);
|
|
92
91
|
(0, _react.useEffect)(() => {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
focusRef.current?.focus();
|
|
98
|
-
}
|
|
99
|
-
} else if (focusFromSubmenu && !(shiftTabPressed && inputIcon?.getAttribute("tabindex") === "0")) {
|
|
100
|
-
/* istanbul ignore else */
|
|
101
|
-
if (focusRef.current) {
|
|
102
|
-
focusRef.current?.focus();
|
|
92
|
+
if (focusFromMenu && !focusFromSubmenu || focusFromSubmenu) {
|
|
93
|
+
if (firstFocusableChild) {
|
|
94
|
+
firstFocusableChild.focus();
|
|
95
|
+
return;
|
|
103
96
|
}
|
|
97
|
+
ref.current?.focus();
|
|
104
98
|
}
|
|
105
|
-
}, [
|
|
106
|
-
const
|
|
107
|
-
if (
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
if (onKeyDown) {
|
|
113
|
-
onKeyDown(event);
|
|
99
|
+
}, [firstFocusableChild, focusFromMenu, focusFromSubmenu]);
|
|
100
|
+
const handleFocus = event => {
|
|
101
|
+
if (isInSubmenu) {
|
|
102
|
+
event.stopPropagation();
|
|
103
|
+
updateSubmenuFocusId?.(menuItemId.current);
|
|
104
|
+
} else {
|
|
105
|
+
updateFocusId?.(menuItemId.current);
|
|
114
106
|
}
|
|
115
|
-
|
|
107
|
+
};
|
|
108
|
+
const handleKeyDown = event => {
|
|
109
|
+
onKeyDown?.(event);
|
|
110
|
+
if (_events.default.isEscKey(event)) {
|
|
116
111
|
ref.current?.focus();
|
|
117
112
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
}
|
|
121
|
-
}, [onKeyDown, handleSubmenuKeyDown]);
|
|
113
|
+
handleSubmenuKeyDown?.(event);
|
|
114
|
+
};
|
|
122
115
|
const elementProps = {
|
|
123
116
|
className: href || onClick ? "carbon-menu-item--has-link" : "",
|
|
124
|
-
href,
|
|
117
|
+
href: firstFocusableChild ? undefined : href,
|
|
118
|
+
onClick: firstFocusableChild ? undefined : onClick,
|
|
125
119
|
target,
|
|
126
120
|
rel,
|
|
127
|
-
onClick,
|
|
128
121
|
icon,
|
|
129
122
|
removeAriaLabelOnIcon: true,
|
|
130
123
|
selected,
|
|
@@ -137,8 +130,7 @@ const MenuItem = ({
|
|
|
137
130
|
}
|
|
138
131
|
const getTitle = title => maxWidth && typeof title === "string" ? title : undefined;
|
|
139
132
|
const itemMaxWidth = !inFullscreenView ? maxWidth : undefined;
|
|
140
|
-
const asPassiveItem = !(onClick || href);
|
|
141
|
-
const hasInput = !!inputRef.current;
|
|
133
|
+
const asPassiveItem = !(onClick || href || firstFocusableChild);
|
|
142
134
|
if (submenu) {
|
|
143
135
|
return /*#__PURE__*/_react.default.createElement(_menu2.StyledMenuItem, _extends({
|
|
144
136
|
"data-component": "menu-item",
|
|
@@ -146,12 +138,12 @@ const MenuItem = ({
|
|
|
146
138
|
"data-role": dataRole,
|
|
147
139
|
menuType: menuType,
|
|
148
140
|
title: getTitle(submenu),
|
|
149
|
-
maxWidth: itemMaxWidth
|
|
150
|
-
onClick: updateFocusOnClick
|
|
141
|
+
maxWidth: itemMaxWidth
|
|
151
142
|
}, rest, {
|
|
152
143
|
inFullscreenView: inFullscreenView,
|
|
153
144
|
id: menuItemId.current,
|
|
154
|
-
as: as
|
|
145
|
+
as: as,
|
|
146
|
+
onFocus: handleFocus
|
|
155
147
|
}), /*#__PURE__*/_react.default.createElement(_submenu.default, _extends({}, typeof submenu !== "boolean" && {
|
|
156
148
|
title: submenu
|
|
157
149
|
}, {
|
|
@@ -169,19 +161,20 @@ const MenuItem = ({
|
|
|
169
161
|
}, rest), children));
|
|
170
162
|
}
|
|
171
163
|
const paddingProps = (0, _utils.filterStyledSystemPaddingProps)(rest);
|
|
164
|
+
const hasInput = !!ref.current?.querySelector("[data-element='input']");
|
|
172
165
|
return /*#__PURE__*/_react.default.createElement(_menu2.StyledMenuItem, _extends({
|
|
173
166
|
"data-component": "menu-item",
|
|
174
167
|
"data-element": dataElement,
|
|
175
168
|
"data-role": dataRole,
|
|
176
169
|
menuType: menuType,
|
|
177
|
-
inSubmenu:
|
|
170
|
+
inSubmenu: isInSubmenu,
|
|
178
171
|
title: getTitle(children),
|
|
179
172
|
maxWidth: itemMaxWidth
|
|
180
173
|
}, rest, {
|
|
181
174
|
inFullscreenView: inFullscreenView && !Object.keys(submenuContext).length,
|
|
182
175
|
id: menuItemId.current,
|
|
183
|
-
|
|
184
|
-
|
|
176
|
+
as: as,
|
|
177
|
+
onFocus: handleFocus
|
|
185
178
|
}), /*#__PURE__*/_react.default.createElement(_menuItem.default, _extends({
|
|
186
179
|
menuType: menuType,
|
|
187
180
|
"data-role": "menu-item-wrapper"
|
|
@@ -190,12 +183,12 @@ const MenuItem = ({
|
|
|
190
183
|
ariaLabel: ariaLabel,
|
|
191
184
|
maxWidth: !submenuHasMaxWidth ? itemMaxWidth : undefined,
|
|
192
185
|
inFullscreenView: inFullscreenView,
|
|
193
|
-
asPassiveItem: asPassiveItem
|
|
194
|
-
placeholderTabIndex: asPassiveItem
|
|
186
|
+
asPassiveItem: asPassiveItem
|
|
195
187
|
}, paddingProps, {
|
|
196
188
|
asDiv: hasInput || as === "div",
|
|
189
|
+
hasFocusableChild: !!firstFocusableChild,
|
|
197
190
|
hasInput: hasInput,
|
|
198
|
-
inSubmenu:
|
|
191
|
+
inSubmenu: isInSubmenu
|
|
199
192
|
}), children));
|
|
200
193
|
};
|
|
201
194
|
exports.MenuItem = MenuItem;
|
|
@@ -9,15 +9,15 @@ interface StyledMenuItemWrapperProps extends Pick<MenuWithChildren, "href" | "sh
|
|
|
9
9
|
isOpen?: boolean;
|
|
10
10
|
inFullscreenView?: boolean;
|
|
11
11
|
asPassiveItem?: boolean;
|
|
12
|
-
placeholderTabIndex?: boolean;
|
|
13
12
|
icon?: string;
|
|
14
13
|
ariaLabel?: string;
|
|
15
14
|
asDiv?: boolean;
|
|
15
|
+
hasFocusableChild?: boolean;
|
|
16
16
|
hasInput?: boolean;
|
|
17
17
|
menuItemVariant?: Pick<MenuWithChildren, "variant">["variant"];
|
|
18
18
|
inSubmenu?: boolean;
|
|
19
19
|
}
|
|
20
20
|
declare const StyledMenuItemWrapper: import("styled-components").StyledComponent<"a", any, {
|
|
21
|
-
as: import("react").ForwardRefExoticComponent<import("../../link").LinkProps & import("react").RefAttributes<
|
|
21
|
+
as: import("react").ForwardRefExoticComponent<import("../../link").LinkProps & import("react").RefAttributes<HTMLAnchorElement | HTMLButtonElement>>;
|
|
22
22
|
} & StyledMenuItemWrapperProps, "as">;
|
|
23
23
|
export default StyledMenuItemWrapper;
|