UNPKG

@yandex/ui

Version:

Yandex UI components

30 lines (29 loc) 1.49 kB
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 }); }