UNPKG

@wordpress/components

Version:
99 lines (81 loc) 3.06 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.MenuItem = MenuItem; exports.default = void 0; var _element = require("@wordpress/element"); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _classnames = _interopRequireDefault(require("classnames")); var _lodash = require("lodash"); var _shortcut = _interopRequireDefault(require("../shortcut")); var _button = _interopRequireDefault(require("../button")); var _icon = _interopRequireDefault(require("../icon")); /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ /** * Renders a generic menu item for use inside the more menu. * * @param {Object} props Component props. * @param {WPElement} props.children Element to render as child of button. * @param {string} props.info Text to use as description for button text. * @param {string} props.className Class to set on the container. * @param {WPIcon} props.icon Button's `icon` prop. * @param {string|Object} props.shortcut Shortcut's `shortcut` prop. * @param {boolean} props.isSelected Whether or not the menu item is currently selected. * @param {string} [props.role="menuitem"] ARIA role of the menu item. * @param {Object} ref React Element ref. * * @return {WPComponent} The component to be rendered. */ function MenuItem({ children, info, className, icon, shortcut, isSelected, role = 'menuitem', ...props }, ref) { className = (0, _classnames.default)('components-menu-item__button', className); if (info) { children = (0, _element.createElement)("span", { className: "components-menu-item__info-wrapper" }, (0, _element.createElement)("span", { className: "components-menu-item__item" }, children), (0, _element.createElement)("span", { className: "components-menu-item__info" }, info)); } if (icon && !(0, _lodash.isString)(icon)) { icon = (0, _element.cloneElement)(icon, { className: 'components-menu-items__item-icon' }); } return (0, _element.createElement)(_button.default, (0, _extends2.default)({ ref: ref // Make sure aria-checked matches spec https://www.w3.org/TR/wai-aria-1.1/#aria-checked , "aria-checked": role === 'menuitemcheckbox' || role === 'menuitemradio' ? isSelected : undefined, role: role, className: className }, props), (0, _element.createElement)("span", { className: "components-menu-item__item" }, children), (0, _element.createElement)(_shortcut.default, { className: "components-menu-item__shortcut", shortcut: shortcut }), icon && (0, _element.createElement)(_icon.default, { icon: icon })); } var _default = (0, _element.forwardRef)(MenuItem); exports.default = _default; //# sourceMappingURL=index.js.map