/** * Copyright (c) Cisco Systems, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * */ /**This mixin using roving tabindex strategy to manage focus in a composite UI component, * the element that is to be included in the tab sequence has tabindex of "0" and all other focusable elements contained in the composite have tabindex of "-1". * Benefit of using roving tabindex to manage focus is that the user agent will scroll the newly focused element into view. * * @property({ type: Number, reflect: true }) selected <--- index of focusable activeElement * * Example: * * @customElements("custom-element") * class CustomElement extends RovingTabIndexMixin(LitElement) { //custom element class implementation * } * */ import { LitElement } from "lit"; import { SlotableClass, SlotableInterface } from "./SlottedMixin"; export type AnyConstructor = new (...args: any[]) => A; export declare abstract class RovingTabIndexClass extends LitElement { protected getAvailableSelectedIndex?(index: number, increment?: number): number; } export interface RovingTabIndexInterface { selected: number; selectedIndex: number; rovingPreventFocus: boolean; } export declare const RovingTabIndexMixin: >(base: T) => T & AnyConstructor;