UNPKG

@atlaskit/menu

Version:

A list of options to help users navigate, or perform actions.

76 lines 2.72 kB
/* button-item.tsx generated by @compiled/babel-plugin v0.39.1 */ import _extends from "@babel/runtime/helpers/extends"; import * as React from 'react'; import { ax, ix } from "@compiled/react/runtime"; import { forwardRef, memo, useCallback, useContext } from 'react'; import InteractionContext from '@atlaskit/interaction-context'; import MenuItemPrimitive from '../internal/components/menu-item-primitive'; /** * __Button item__ * * A button item is used to populate a menu with items that are buttons. * * - [Examples](https://atlaskit.atlassian.com/packages/design-system/menu/docs/button-item) * - [Code](https://atlaskit.atlassian.com/packages/design-system/menu) */ const ButtonItem = /*#__PURE__*/memo( /*#__PURE__*/forwardRef((props, ref) => { const { children, description, iconAfter, iconBefore, isDisabled = false, isSelected = false, onClick, testId, onMouseDown, shouldTitleWrap, shouldDescriptionWrap, className: UNSAFE_className, interactionName, ...rest } = props; const onMouseDownHandler = onMouseDown; const interactionContext = useContext(InteractionContext); const handleClick = useCallback(e => { interactionContext === null || interactionContext === void 0 ? void 0 : interactionContext.tracePress(interactionName, e.timeStamp); onClick === null || onClick === void 0 ? void 0 : onClick(e); }, [onClick, interactionContext, interactionName]); if (!children) { return null; } return /*#__PURE__*/React.createElement(MenuItemPrimitive // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766 , _extends({ className: UNSAFE_className }, rest, { iconBefore: iconBefore, iconAfter: iconAfter, isDisabled: isDisabled, isSelected: isSelected, isTitleHeading: false, description: description, title: children, shouldTitleWrap: shouldTitleWrap, shouldDescriptionWrap: shouldDescriptionWrap, testId: testId && `${testId}--primitive` }), ({ children, className }) => /*#__PURE__*/React.createElement("button", _extends({ "data-testid": testId // This is intentionally placed before the `...rest` spread to prevent overriding existing usages of `aria-current`, // which are already being passed to the button element. , "aria-current": isSelected ? 'true' : undefined }, rest, { // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766 className: className, ref: ref, disabled: isDisabled, onClick: handleClick, onMouseDown: onMouseDownHandler, type: "button" }), children)); })); export default ButtonItem;