@neo4j-ndl/react
Version:
React implementation of Neo4j Design System
75 lines • 2.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.focusCellInPreviousRow = exports.focusCellInNextRow = exports.focusPreviousRow = exports.focusNextRow = void 0;
/**
*
* Copyright (c) "Neo4j"
* Neo4j Sweden AB [http://neo4j.com]
*
* This file is part of Neo4j.
*
* Neo4j is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
const utils_1 = require("../_common/utils");
const focusElementInElement = (parentElement, newParentElement, activeElement) => {
const focusable = (0, utils_1.findFocusableChildren)(newParentElement);
const focusableCurrent = (0, utils_1.findFocusableChildren)(parentElement);
const cellIndex = focusableCurrent.indexOf(activeElement);
let newIndex = cellIndex;
if (cellIndex >= focusable.length) {
newIndex = focusable.length - 1;
}
else if (cellIndex < 0) {
newIndex = 0;
}
const element = focusable[newIndex];
if (element instanceof HTMLElement) {
element.focus();
}
};
const focusNextRow = (parentElement) => {
const { nextElementSibling } = parentElement;
if (nextElementSibling instanceof HTMLElement) {
nextElementSibling.focus();
}
};
exports.focusNextRow = focusNextRow;
const focusPreviousRow = (parentElement) => {
const { previousElementSibling } = parentElement;
if (previousElementSibling instanceof HTMLElement) {
previousElementSibling.focus();
}
};
exports.focusPreviousRow = focusPreviousRow;
const focusCellInNextRow = (parentElement) => {
const { nextElementSibling } = parentElement;
const { activeElement } = document;
if (!(nextElementSibling instanceof HTMLElement) ||
!(activeElement instanceof HTMLElement)) {
return;
}
focusElementInElement(parentElement, nextElementSibling, activeElement);
};
exports.focusCellInNextRow = focusCellInNextRow;
const focusCellInPreviousRow = (parentElement) => {
const { previousElementSibling } = parentElement;
const { activeElement } = document;
if (!(previousElementSibling instanceof HTMLElement) ||
!(activeElement instanceof HTMLElement)) {
return;
}
focusElementInElement(parentElement, previousElementSibling, activeElement);
};
exports.focusCellInPreviousRow = focusCellInPreviousRow;
//# sourceMappingURL=tree-view-keyboard-helpers.js.map