@yandex/ui
Version:
Yandex UI components
34 lines (33 loc) • 1.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useMenuItem = void 0;
var tslib_1 = require("tslib");
var react_1 = require("react");
var Menu_1 = require("../Menu");
function useMenuItem(props) {
var checked = props.checked, className = props.className, disabled = props.disabled, hovered = props.hovered, _a = props.type, type = _a === void 0 ? 'menuitem' : _a, id = props.id, index = props.index, onClick = props.onClick, onMouseEnter = props.onMouseEnter, onMouseLeave = props.onMouseLeave, otherProps = tslib_1.__rest(props, ["checked", "className", "disabled", "hovered", "type", "id", "index", "onClick", "onMouseEnter", "onMouseLeave"]);
var handleClick = react_1.useCallback(function (event) {
if (onClick) {
onClick(event, index);
}
}, [index, onClick]);
var handleMouseEnter = react_1.useCallback(function (event) {
if (onMouseEnter) {
onMouseEnter(event, index);
}
}, [index, onMouseEnter]);
var handleMouseLeave = react_1.useCallback(function (event) {
if (onMouseLeave) {
onMouseLeave(event, index);
}
}, [index, onMouseLeave]);
return tslib_1.__assign(tslib_1.__assign({}, otherProps), { 'aria-selected': checked, 'aria-disabled': disabled,
// uniq id for a11y
id: id, role: type, className: Menu_1.cnMenu('Item', {
checked: checked,
disabled: disabled,
hovered: hovered,
type: type,
}, [className]), onClick: handleClick, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave });
}
exports.useMenuItem = useMenuItem;