UNPKG

@awsui/components-react

Version:

On July 19th, 2022, we launched [Cloudscape Design System](https://cloudscape.design). Cloudscape is an evolution of AWS-UI. It consists of user interface guidelines, front-end components, design resources, and development tools for building intuitive, en

41 lines 1.3 kB
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // Credits to // https://github.com/theKashey/focus-lock/blob/33f8b4bd9675d2605b15e2e4015b77fe35fbd6d0/src/utils/tabbables.ts const tabbables = [ 'button:enabled', 'select:enabled', 'textarea:enabled', 'input:enabled', 'a[href]', 'area[href]', 'summary', 'iframe', 'object', 'embed', 'audio[controls]', 'video[controls]', '[tabindex]', '[contenteditable]', '[autofocus]', ].join(','); export function isFocusable(element) { return element.matches(tabbables); } export function getAllFocusables(container) { return Array.prototype.slice.call(container.querySelectorAll(tabbables)); } function getFocusables(container) { return getAllFocusables(container).filter((element) => element.tabIndex !== -1); } export function getFirstFocusable(container) { var _a; const focusables = getFocusables(container); return (_a = focusables[0]) !== null && _a !== void 0 ? _a : null; } export function getLastFocusable(container) { var _a; const focusables = getFocusables(container); return (_a = focusables[focusables.length - 1]) !== null && _a !== void 0 ? _a : null; } //# sourceMappingURL=utils.js.map