UNPKG

@hashicorp/design-system-components

Version:
95 lines (94 loc) 3.1 kB
/** * 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 {};