/**-----------------------------------------------------------------------------------------
* Copyright © 2026 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
import { ElementRef } from '@angular/core';
import { FocusableContainer } from '../types/focusable-container';
/**
 * @hidden
 */
export interface FocusableElement {
    /**
     * A reference to the focusable DOM element.
     */
    element: ElementRef;
    /**
     * The order of the element with respect to the other focusable elements.
     * If multiple elements share the same value, their relative to each other order follows their position in the component tree.
     */
    focusIndex: number;
    /**
     * The part of the Scheduler the element belongs to - 'toolbar', 'content' or 'footer'.
     */
    containerType: FocusableContainer;
    /**
     * Includes or excludes the element from the tab sequence.
     *
     * @param active If `true`, the element will receive a tabIndex of `0` or greater. If `false`, the `tabIndex` has to be set to `-1`.
     */
    toggle(active: boolean): void;
    /**
     * Indicates if the element can be focused.
     *
     * @returns `true` if the element can be focused. Otherwise, returns `false`.
     */
    canFocus(): boolean;
    /**
     * Focuses the element.
     * @param preventScroll If `true`, the browser will not scroll the element into view. Defaults to `true`.
     */
    focus(preventScroll?: boolean): void;
    /**
     * Toggles the focused state of the element without explicitly focusing it.
     */
    toggleFocus(value: boolean): void;
}
