UNPKG

@ozen-ui/kit

Version:

React component library

48 lines (47 loc) 2.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useCalendarKeyboard = void 0; var tslib_1 = require("tslib"); var useBoolean_1 = require("../../../../hooks/useBoolean"); var useClickOutside_1 = require("../../../../hooks/useClickOutside"); var useEventListener_1 = require("../../../../hooks/useEventListener"); var getFocusableElements_1 = require("../../../../utils/getFocusableElements"); var isKey_1 = require("../../../../utils/isKey"); var useCalendarKeyboard = function (_a) { var controlRef = _a.controlRef, calendarRef = _a.calendarRef, _b = _a.active, active = _b === void 0 ? false : _b; var _c = tslib_1.__read((0, useBoolean_1.useBoolean)(false), 2), focused = _c[0], _d = _c[1], on = _d.on, off = _d.off; (0, useClickOutside_1.useClickOutside)({ refs: [calendarRef], active: focused, handler: function () { var _a; (_a = controlRef.current) === null || _a === void 0 ? void 0 : _a.focus(); off(); }, }); (0, useEventListener_1.useEventListener)({ element: controlRef, eventName: 'keydown', handler: function (event) { if ((0, isKey_1.isKey)(event, 'Tab') && calendarRef.current) { event.preventDefault(); var _a = tslib_1.__read((0, getFocusableElements_1.getFocusableElements)(calendarRef.current), 1), firstFocusableElements = _a[0]; firstFocusableElements === null || firstFocusableElements === void 0 ? void 0 : firstFocusableElements.focus(); on(); } }, active: active && !focused, }); (0, useEventListener_1.useEventListener)({ eventName: 'keydown', handler: function (event) { if ((0, isKey_1.isKey)(event, 'Escape') && controlRef.current) { controlRef.current.focus(); off(); } }, active: focused, }); return focused; }; exports.useCalendarKeyboard = useCalendarKeyboard;