@navikt/ds-react
Version:
React components from the Norwegian Labour and Welfare Administration.
48 lines (47 loc) • 1.78 kB
TypeScript
export type DescendantOptions<T = object> = T & {
/**
* If `true`, the item will be registered in all nodes map
* but omitted from enabled nodes map
*/
disabled?: boolean;
};
export type Descendant<T, K> = DescendantOptions<K> & {
/**
* DOM element of the item
*/
node: T;
/**
* index of item in all nodes map and enabled nodes map
*/
index: number;
};
/**
* @internal
*
* Class to manage descendants and their relative indices in the DOM.
* It uses `node.compareDocumentPosition(...)` under the hood
*/
export declare class DescendantsManager<T extends HTMLElement, K extends Record<string, any> = object> {
private descendants;
register: (nodeOrOptions: T | null | DescendantOptions<K>) => void | ((node: T | null) => void);
unregister: (node: T) => void;
destroy: () => void;
private assignIndex;
count: () => number;
enabledCount: () => number;
values: () => Descendant<T, K>[];
enabledValues: () => Descendant<T, K>[];
item: (index: number) => Descendant<T, K> | undefined;
enabledItem: (index: number) => Descendant<T, K> | undefined;
first: () => Descendant<T, K> | undefined;
firstEnabled: () => Descendant<T, K> | undefined;
last: () => Descendant<T, K> | undefined;
lastEnabled: () => Descendant<T, K> | undefined;
indexOf: (node: T | null) => number;
enabledIndexOf: (node: T | null) => number;
next: (index: number, loop?: boolean) => Descendant<T, K> | undefined;
nextEnabled: (index: number, loop?: boolean) => Descendant<T, K> | undefined;
prev: (index: number, loop?: boolean) => Descendant<T, K> | undefined;
prevEnabled: (index: number, loop?: boolean) => Descendant<T, K> | undefined;
private registerNode;
}