@hashicorp/design-system-components
Version:
Helios Design System Components
77 lines (76 loc) • 3.84 kB
TypeScript
/**
* Copyright IBM Corp. 2021, 2025
* SPDX-License-Identifier: MPL-2.0
*/
import Component from '@glimmer/component';
import type { WithBoundArgs } from '@glint/template';
import { HdsDropdownPositionValues } from './types.ts';
import HdsDropdownToggleButton from './toggle/button';
import HdsDropdownToggleIcon from './toggle/icon';
import HdsDropdownHeader from './header';
import HdsDropdownListItemCheckbox from './list-item/checkbox';
import HdsDropdownListItemCheckmark from './list-item/checkmark';
import HdsDropdownListItemCopyItem from './list-item/copy-item';
import HdsDropdownListItemDescription from './list-item/description';
import HdsDropdownListItemGeneric from './list-item/generic';
import HdsDropdownListItemInteractive from './list-item/interactive';
import HdsDropdownListItemRadio from './list-item/radio';
import HdsDropdownListItemSeparator from './list-item/separator';
import HdsDropdownListItemTitle from './list-item/title';
import HdsDropdownFooter from './footer';
import type { HdsPopoverPrimitiveSignature } from '../popover-primitive/index';
import type { HdsDropdownPositions } from './types.ts';
import type { HdsAnchoredPositionOptions } from '../../../modifiers/hds-anchored-position.ts';
export declare const DEFAULT_POSITION = HdsDropdownPositionValues.BottomRight;
export declare const POSITIONS: HdsDropdownPositions[];
export interface HdsDropdownSignature {
Args: {
height?: string;
isInline?: boolean;
isOpen?: HdsPopoverPrimitiveSignature['Args']['isOpen'];
listPosition?: HdsDropdownPositions;
width?: string;
enableCollisionDetection?: HdsAnchoredPositionOptions['enableCollisionDetection'];
preserveContentInDom?: boolean;
matchToggleWidth?: boolean;
onClose?: HdsPopoverPrimitiveSignature['Args']['onClose'];
onFocusOut?: HdsPopoverPrimitiveSignature['Args']['onFocusOut'];
boundary?: HdsAnchoredPositionOptions['boundary'];
};
Blocks: {
default: [
{
Footer?: typeof HdsDropdownFooter;
Header?: typeof HdsDropdownHeader;
Checkbox?: typeof HdsDropdownListItemCheckbox;
Checkmark?: typeof HdsDropdownListItemCheckmark;
CopyItem?: typeof HdsDropdownListItemCopyItem;
Description?: typeof HdsDropdownListItemDescription;
Generic?: typeof HdsDropdownListItemGeneric;
Interactive?: typeof HdsDropdownListItemInteractive;
Radio?: typeof HdsDropdownListItemRadio;
Separator?: typeof HdsDropdownListItemSeparator;
Title?: typeof HdsDropdownListItemTitle;
ToggleButton?: WithBoundArgs<typeof HdsDropdownToggleButton, 'isOpen' | 'setupPrimitiveToggle'>;
ToggleIcon?: WithBoundArgs<typeof HdsDropdownToggleIcon, 'isOpen' | 'setupPrimitiveToggle'>;
close: (event?: Event) => void;
}
];
};
Element: HTMLDivElement;
}
export default class HdsDropdown extends Component<HdsDropdownSignature> {
get listPosition(): HdsDropdownPositions;
get enableCollisionDetection(): HdsAnchoredPositionOptions['enableCollisionDetection'];
get matchToggleWidth(): HdsAnchoredPositionOptions['matchToggleWidth'];
get anchoredPositionOptions(): {
placement: HdsAnchoredPositionOptions['placement'];
offsetOptions: HdsAnchoredPositionOptions['offsetOptions'];
enableCollisionDetection: HdsAnchoredPositionOptions['enableCollisionDetection'];
matchToggleWidth: HdsAnchoredPositionOptions['matchToggleWidth'];
boundary: HdsAnchoredPositionOptions['boundary'];
};
get classNames(): string;
get classNamesContent(): string;
didInsertList: (element: HTMLUListElement) => void;
}