UNPKG

@yandex/ui

Version:

Yandex UI components

34 lines (33 loc) 1.67 kB
"use strict"; 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;