@hashicorp/design-system-components
Version:
Helios Design System Components
95 lines (94 loc) • 3.1 kB
TypeScript
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import Component from '@glimmer/component';
import type { HdsAnchoredPositionOptions } from '../../../modifiers/hds-anchored-position.ts';
import type { ModifierLike } from '@glint/template';
import type Owner from '@ember/owner';
export interface HdsPopoverPrimitiveSignature {
Args: {
isOpen?: boolean;
enableSoftEvents?: boolean;
enableClickEvents?: boolean;
onOpen?: () => void;
onClose?: () => void;
};
Blocks: {
default: [
{
setupPrimitiveContainer: ModifierLike<SetupPrimitiveContainerModifier>;
setupPrimitiveToggle: ModifierLike<SetupPrimitiveToggleModifier>;
setupPrimitivePopover: ModifierLike<SetupPrimitivePopoverModifier>;
toggleElement?: HTMLButtonElement;
popoverElement?: HTMLElement;
isOpen: boolean;
showPopover: () => void;
hidePopover: (event?: Event) => void;
togglePopover: () => void;
}
];
};
}
interface SetupPrimitiveContainerModifier {
Element: HTMLElement;
}
export interface SetupPrimitiveToggleModifier {
Element: HTMLButtonElement;
}
export interface SetupPrimitivePopoverModifier {
Element: HTMLElement;
Args: {
Positional: [];
Named: {
anchoredPositionOptions: HdsAnchoredPositionOptions;
};
};
}
export default class HdsPopoverPrimitive extends Component<HdsPopoverPrimitiveSignature> {
private _isOpen;
private _isClosing;
private _anchoredPositionOptions?;
private _containerElement?;
private _toggleElement?;
private _popoverElement?;
enableSoftEvents: boolean;
enableClickEvents: boolean;
private _timer?;
constructor(owner: Owner, args: HdsPopoverPrimitiveSignature['Args']);
setupPrimitiveContainer: import("ember-modifier").FunctionBasedModifier<{
Element: HTMLElement;
Args: {
Named: import("ember-modifier/-private/signature").EmptyObject;
Positional: [];
};
}>;
setupPrimitiveToggle: import("ember-modifier").FunctionBasedModifier<{
Element: HTMLButtonElement;
Args: {
Named: import("ember-modifier/-private/signature").EmptyObject;
Positional: [];
};
}>;
setupPrimitivePopover: import("ember-modifier").FunctionBasedModifier<{
Args: {
Positional: unknown[];
Named: {
anchoredPositionOptions: HdsAnchoredPositionOptions;
};
};
Element: HTMLElement;
}>;
private _applyAnchoredPositionModifier;
private _linkToggleAndPopover;
showPopover(): void;
hidePopover(_event?: Event): void;
togglePopover(): void;
onBeforeTogglePopover(event: ToggleEvent): void;
onTogglePopover(event: ToggleEvent): void;
onMouseEnter(): void;
onFocusIn(): void;
onMouseLeave(): void;
onFocusOut(event: FocusEvent): void;
}
export {};