@hashicorp/design-system-components
Version:
Helios Design System Components
83 lines (82 loc) • 2.52 kB
TypeScript
import Component from '@glimmer/component';
import type Owner from '@ember/owner';
import type { ModifierLike } from '@glint/template';
import type { HdsCompositeOrientations } from './types.ts';
interface HdsCompositeCompositeModifierSignature {
Element: HTMLElement;
}
interface HdsCompositeItemModifierSignature {
Element: HTMLElement;
Args: {
Named: {
disabled?: boolean;
};
};
}
interface HdsCompositeGroupModifierSignature {
Element: HTMLElement;
}
export interface HdsCompositeSignature {
Args: {
orientation?: HdsCompositeOrientations;
loop?: boolean | HdsCompositeOrientations;
wrap?: boolean | HdsCompositeOrientations;
defaultCurrentId?: string | null;
};
Blocks: {
default: [
{
composite: ModifierLike<HdsCompositeCompositeModifierSignature>;
item: ModifierLike<HdsCompositeItemModifierSignature>;
group: ModifierLike<HdsCompositeGroupModifierSignature>;
}
];
};
}
export default class Composite extends Component<HdsCompositeSignature> {
private _items;
private _groups;
private _currentId;
private _compositeElement;
private _preserveTabIndex;
constructor(owner: Owner, args: HdsCompositeSignature['Args']);
private get _resolvedCurrentId();
private get _currentItem();
private get _firstEnabledItem();
private get _currentIndex();
private get _config();
private get _navigationSnapshot();
private _registerItem;
private _unregisterItem;
private _registerGroup;
private _unregisterGroup;
private _reassociateGroups;
private _moveTo;
private _syncAllElements;
private _syncItemElement;
private _syncCompositeElement;
compositeModifier: import("ember-modifier").FunctionBasedModifier<{
Element: HTMLElement;
Args: {
Named: import("ember-modifier/-private/signature").EmptyObject;
Positional: [];
};
}>;
itemModifier: import("ember-modifier").FunctionBasedModifier<{
Element: HTMLElement;
Args: {
Named: {
disabled?: boolean;
};
Positional: [];
};
}>;
groupModifier: import("ember-modifier").FunctionBasedModifier<{
Element: HTMLElement;
Args: {
Named: import("ember-modifier/-private/signature").EmptyObject;
Positional: [];
};
}>;
}
export {};