UNPKG

@hashicorp/design-system-components

Version:
98 lines (97 loc) 3.3 kB
/** * Copyright IBM Corp. 2021, 2025 * SPDX-License-Identifier: MPL-2.0 */ import Component from '@glimmer/component'; import type { ModifierLike } from '@glint/template'; import type Owner from '@ember/owner'; import type { HdsAnchoredPositionOptions } from '../../../modifiers/hds-anchored-position.ts'; export interface HdsPopoverPrimitiveSignature { Args: { isOpen?: boolean; enableSoftEvents?: boolean; enableClickEvents?: boolean; boundary?: HdsAnchoredPositionOptions['boundary']; onOpen?: () => void; onClose?: () => void; onFocusOut?: () => 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; boundary?: HdsAnchoredPositionOptions['boundary']; } ]; }; } 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 {};