@yandex/ui
Version:
Yandex UI components
24 lines (23 loc) • 1.06 kB
JavaScript
import { __assign, __rest } from "tslib";
import React, { useCallback } from 'react';
import '../polyfills/pointerfocus';
import { forceUtilityFocus } from '../lib/pointerfocus';
import { Keys, isKeyCode } from '../lib/keyboard';
import { Tumbler as TumblerCommon, CHECKED_KEYS, UNCHECKED_KEYS } from './Tumbler';
export * from './Tumbler';
export var Tumbler = function (_a) {
var checked = _a.checked, htmlOnKeyDown = _a.onKeyDown, props = __rest(_a, ["checked", "onKeyDown"]);
// prettier-ignore
var onKeyDown = useCallback(function (event) {
if ((!checked && isKeyCode(event.keyCode, CHECKED_KEYS)) ||
(checked && isKeyCode(event.keyCode, UNCHECKED_KEYS)) ||
(event.keyCode === Keys.SPACE)) {
forceUtilityFocus();
}
if (htmlOnKeyDown !== undefined) {
htmlOnKeyDown(event);
}
}, [checked, htmlOnKeyDown]);
return React.createElement(TumblerCommon, __assign({ checked: checked, onKeyDown: onKeyDown }, props));
};
Tumbler.displayName = TumblerCommon.displayName;