@yandex/ui
Version:
Yandex UI components
30 lines (29 loc) • 1.49 kB
JavaScript
import { __assign, __rest } from "tslib";
import { useCallback } from 'react';
import { cnMenu } from '../Menu';
export 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 = __rest(props, ["checked", "className", "disabled", "hovered", "type", "id", "index", "onClick", "onMouseEnter", "onMouseLeave"]);
var handleClick = useCallback(function (event) {
if (onClick) {
onClick(event, index);
}
}, [index, onClick]);
var handleMouseEnter = useCallback(function (event) {
if (onMouseEnter) {
onMouseEnter(event, index);
}
}, [index, onMouseEnter]);
var handleMouseLeave = useCallback(function (event) {
if (onMouseLeave) {
onMouseLeave(event, index);
}
}, [index, onMouseLeave]);
return __assign(__assign({}, otherProps), { 'aria-selected': checked, 'aria-disabled': disabled,
// uniq id for a11y
id: id, role: type, className: cnMenu('Item', {
checked: checked,
disabled: disabled,
hovered: hovered,
type: type,
}, [className]), onClick: handleClick, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave });
}