ember-bootstrap
Version:
Bootstrap components for Ember.js
119 lines (117 loc) • 3.4 kB
TypeScript
import Component from '@glimmer/component';
import type { Placement as PopperPlacement } from '@popperjs/core';
import type BsDropdownMenuDividerComponent from './menu/divider';
import type BsDropdownMenuItemComponent from './menu/item';
import type BsLinkToComponent from '../bs-link-to';
import type { ComponentLike } from '@glint/template';
interface DropdownMenuSignature {
Element: HTMLDivElement;
Args: {
align?: 'left' | 'right';
dividerComponent: ComponentLike<typeof BsDropdownMenuDividerComponent>;
isOpen?: boolean;
itemComponent: ComponentLike<typeof BsDropdownMenuItemComponent>;
linkToComponent: ComponentLike<BsLinkToComponent>;
registerChildElement: (element: HTMLDivElement, [type]: ['menu']) => void;
renderInPlace?: boolean;
toggleElement: HTMLAnchorElement;
unregisterChildElement: (element: HTMLDivElement, [type]: ['menu']) => void;
/**
* @internal
*/
direction?: 'up' | 'down' | 'left' | 'right';
/**
* @internal
*/
inNav?: boolean;
};
Blocks: {
default: [
{
divider: ComponentLike<typeof BsDropdownMenuDividerComponent>;
item: ComponentLike<typeof BsDropdownMenuItemComponent>;
linkTo: ComponentLike<BsLinkToComponent>;
'link-to': ComponentLike<BsLinkToComponent>;
}
];
};
}
/**
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(): any;
get alignClass(): string | undefined;
isOpen: boolean | undefined;
updateIsOpen(value: boolean): void;
flip: boolean;
get popperPlacement(): PopperPlacement;
setFocus(): void;
get popperOptions(): {
placement: PopperPlacement;
onFirstUpdate: () => void;
modifiers: {
name: string;
enabled: boolean;
}[];
};
}
export {};
//# sourceMappingURL=menu.d.ts.map