ember-bootstrap
Version:
Bootstrap components for Ember.js
135 lines (133 loc) • 3.81 kB
TypeScript
import Component from '@glimmer/component';
import type { Placement as PopperPlacement } from '@popperjs/core';
import { type DropdownMenuDividerSignature } from './menu/divider';
import { type DropdownMenuItemSignature } from './menu/item';
import { type BsLinkToSignature } from '../bs-link-to';
import type { ComponentLike } from '@glint/template';
interface DropdownMenuSignature {
Element: HTMLDivElement;
Args: {
align?: 'left' | 'right';
dividerComponent?: ComponentLike<DropdownMenuDividerSignature>;
isOpen?: boolean;
itemComponent?: ComponentLike<DropdownMenuItemSignature>;
linkToComponent?: ComponentLike<BsLinkToSignature>;
registerChildElement: (element: HTMLDivElement, [type]: ['menu']) => void;
renderInPlace?: boolean;
toggleElement: HTMLElement | null;
unregisterChildElement: (element: HTMLDivElement, [type]: ['menu']) => void;
/**
* @internal
*/
direction?: 'up' | 'down' | 'left' | 'right';
/**
* @internal
*/
inNav?: boolean;
};
Blocks: {
default: [
{
divider: ComponentLike<DropdownMenuDividerSignature>;
item: ComponentLike<DropdownMenuItemSignature>;
linkTo: ComponentLike<BsLinkToSignature>;
'link-to': ComponentLike<BsLinkToSignature>;
}
];
};
}
/**
Component for the dropdown menu.
See [Components.Dropdown](Components.Dropdown.html) for examples.
@class DropdownMenu
@namespace Components
@extends Component
@public
*/
export default class DropdownMenu extends Component<DropdownMenuSignature> {
/**
* @property _element
* @type null | HTMLElement
* @private
*/
menuElement: HTMLDivElement | null;
/**
* Alignment of the menu, either "left" or "right"
*
* @property align
* @type string
* @default left
* @public
*/
get align(): "left" | "right";
/**
* @property direction
* @default 'down'
* @type string
* @private
*/
get direction(): "left" | "right" | "up" | "down";
/**
* By default, the menu is rendered in the same place as the dropdown. If you experience clipping
* issues, you can set this to false to render the menu in a wormhole at the top of the DOM.
*
* @property renderInPlace
* @type boolean
* @default true
* @public
*/
get renderInPlace(): boolean;
/**
* @property inNav
* @type {boolean}
* @private
*/
get inNav(): boolean;
/**
* @property _renderInPlace
* @type boolean
* @private
*/
get _renderInPlace(): boolean;
/**
* The wormhole destinationElement
*
* @property destinationElement
* @type object
* @readonly
* @private
*/
get destinationElement(): Element | null | undefined;
get alignClass(): string | undefined;
flip: boolean;
get popperPlacement(): PopperPlacement;
setFocus(): void;
get popperOptions(): {
placement: PopperPlacement;
onFirstUpdate: () => void;
modifiers: {
name: string;
enabled: boolean;
}[];
};
/**
* @property itemComponent
* @type {String}
* @private
*/
get itemComponent(): ComponentLike<DropdownMenuItemSignature>;
/**
* @property linkToComponent
* @type {String}
* @private
*/
get linkToComponent(): ComponentLike<BsLinkToSignature>;
/**
* @property dividerComponent
* @type {String}
* @private
*/
get dividerComponent(): ComponentLike<DropdownMenuDividerSignature>;
}
export { type DropdownMenuSignature };
//# sourceMappingURL=menu.d.ts.map