import { InjectionToken } from '@angular/core'; export type ScrollbarAppearance = 'standard' | 'compact'; export type ScrollbarTrack = 'vertical' | 'horizontal' | 'all'; export type ScrollbarVisibility = 'hover' | 'always' | 'native'; export type ScrollbarPosition = 'native' | 'invertY' | 'invertX' | 'invertAll'; export type ScrollbarPointerEventsMethod = 'viewport' | 'scrollbar'; export declare const NG_SCROLLBAR_OPTIONS: InjectionToken>; export type NgScrollbarOptions = Partial; /** * The following interface is meant to be used internally to ensure that the properties are not undefined (for strict mode) */ export interface IScrollbarOptions { /** * Sets the scroll axis of the viewport, there are 3 options: * * - `vertical` Use both vertical and horizontal scrollbar-control * - `horizontal` Use both vertical and horizontal scrollbar-control * - `all` Use both vertical and horizontal scrollbar-control */ track: ScrollbarTrack; /** * When to show the scrollbar, and there are 3 options: * * - `native` (default) Scrollbar will be visible when viewport is scrollable like with native scrollbar-control * - `hover` Scrollbars are hidden by default, only visible on scrolling or hovering * - `always` Scrollbars are always shown even if the viewport is not scrollable */ visibility: ScrollbarVisibility; /** * Sets the appearance of the scrollbar, there are 2 options: * * - `standard` (default) scrollbar space will be reserved just like with native scrollbar-control. * - `compact` scrollbar doesn't reserve any space, they are placed over the viewport. */ appearance: ScrollbarAppearance; /** * Sets the position of each scrollbar, there are 4 options: * * - `native` (Default) Use the default position like in native scrollbar-control. * - `invertY` Inverts vertical scrollbar position * - `invertX` Inverts Horizontal scrollbar position * - `invertAll` Inverts both scrollbar-control positions */ position: ScrollbarPosition; /** * Sets the pointer events method * Use viewport pointer events to handle dragging and track click (This makes scrolling work when mouse is over the scrollbar) * Use scrollbar pointer events to handle dragging and track click */ pointerEventsMethod: ScrollbarPointerEventsMethod; /** A class forwarded to scrollable viewport element */ viewClass: string; /** A class forwarded to the scrollbar track element */ trackClass: string; /** A class forwarded to the scrollbar thumb element */ thumbClass: string; /** The minimum scrollbar thumb size in px */ minThumbSize: number; /** The duration which the scrolling takes to reach its target when scrollbar rail is clicked */ trackClickScrollDuration: number; /** A flag used to enable/disable the scrollbar pointer events */ pointerEventsDisabled: boolean; /** Debounce interval for detecting changes via window.resize event */ windowResizeDebounce: number; /** Debounce interval for detecting changes via ResizeObserver */ sensorDebounce: number; /** Whether ResizeObserver is disabled */ sensorDisabled: boolean; /** Disable auto-height */ autoHeightDisabled: boolean; /** Disable auto-width */ autoWidthDisabled: boolean; /** Scroll Audit Time */ scrollAuditTime: number; /** Enable viewport mousemove event propagation (only when pointerEventsMethod="viewport") */ viewportPropagateMouseMove: boolean; } /** * Set of attributes added on the scrollbar wrapper */ export interface NgScrollbarState { position?: ScrollbarPosition; track?: ScrollbarTrack; appearance?: ScrollbarAppearance; visibility?: ScrollbarVisibility; deactivated?: boolean; pointerEventsMethod?: ScrollbarPointerEventsMethod; dir?: 'rtl' | 'ltr'; verticalUsed?: boolean; horizontalUsed?: boolean; isVerticallyScrollable?: boolean; isHorizontallyScrollable?: boolean; verticalHovered?: boolean; horizontalHovered?: boolean; verticalDragging?: boolean; horizontalDragging?: boolean; scrollbarClicked?: boolean; }