bits-ui 2.9.8 → 2.9.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,7 +4,7 @@ import { CustomEventDispatcher } from "../../internal/events.js";
4
4
  import type { AnyFn, BitsFocusEvent, BitsKeyboardEvent, BitsMouseEvent, BitsPointerEvent, OnChangeFn, RefAttachment, WithRefOpts } from "../../internal/types.js";
5
5
  import type { Direction } from "../../shared/index.js";
6
6
  import { IsUsingKeyboard } from "../../index.js";
7
- import type { KeyboardEventHandler, PointerEventHandler } from "svelte/elements";
7
+ import type { KeyboardEventHandler, PointerEventHandler, MouseEventHandler } from "svelte/elements";
8
8
  import { RovingFocusGroup } from "../../internal/roving-focus-group.js";
9
9
  export declare const CONTEXT_MENU_TRIGGER_ATTR = "data-context-menu-trigger";
10
10
  export declare const MenuCheckboxGroupContext: Context<MenuCheckboxGroupState>;
@@ -346,6 +346,7 @@ export declare class DropdownMenuTriggerState {
346
346
  readonly parentMenu: MenuMenuState;
347
347
  readonly attachment: RefAttachment;
348
348
  constructor(opts: DropdownMenuTriggerStateOpts, parentMenu: MenuMenuState);
349
+ onclick: MouseEventHandler<HTMLElement>;
349
350
  onpointerdown: PointerEventHandler<HTMLElement>;
350
351
  onpointerup: PointerEventHandler<HTMLElement>;
351
352
  onkeydown: KeyboardEventHandler<HTMLElement>;
@@ -357,6 +358,7 @@ export declare class DropdownMenuTriggerState {
357
358
  readonly "aria-controls": string | undefined;
358
359
  readonly "data-disabled": "" | undefined;
359
360
  readonly "data-state": "open" | "closed";
361
+ readonly onclick: MouseEventHandler<HTMLElement>;
360
362
  readonly onpointerdown: PointerEventHandler<HTMLElement>;
361
363
  readonly onpointerup: PointerEventHandler<HTMLElement>;
362
364
  readonly onkeydown: KeyboardEventHandler<HTMLElement>;
@@ -768,6 +768,17 @@ export class DropdownMenuTriggerState {
768
768
  this.parentMenu = parentMenu;
769
769
  this.attachment = attachRef(this.opts.ref, (v) => (this.parentMenu.triggerNode = v));
770
770
  }
771
+ onclick = (e) => {
772
+ /**
773
+ * MacOS VoiceOver sends a click in Safari/Firefox bypassing the keydown event
774
+ * when V0+Space is pressed. Since we already handle the keydown event and the
775
+ * pointerdown events separately, we ignore it if the detail is not 0.
776
+ */
777
+ if (this.opts.disabled.current || e.detail !== 0)
778
+ return;
779
+ this.parentMenu.toggleOpen();
780
+ e.preventDefault();
781
+ };
771
782
  onpointerdown = (e) => {
772
783
  if (this.opts.disabled.current)
773
784
  return;
@@ -817,6 +828,7 @@ export class DropdownMenuTriggerState {
817
828
  "data-state": getDataOpenClosed(this.parentMenu.opts.open.current),
818
829
  [this.parentMenu.root.getBitsAttr("trigger")]: "",
819
830
  //
831
+ onclick: this.onclick,
820
832
  onpointerdown: this.onpointerdown,
821
833
  onpointerup: this.onpointerup,
822
834
  onkeydown: this.onkeydown,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bits-ui",
3
- "version": "2.9.8",
3
+ "version": "2.9.9",
4
4
  "license": "MIT",
5
5
  "repository": "github:huntabyte/bits-ui",
6
6
  "funding": "https://github.com/sponsors/huntabyte",