@astryxdesign/core 0.7.5-canary.d76a228 → 0.7.5-canary.e52ef25

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.
Files changed (180) hide show
  1. package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
  2. package/dist/Breadcrumbs/BreadcrumbItem.js +5 -0
  3. package/dist/Button/Button.d.ts.map +1 -1
  4. package/dist/Button/Button.js +8 -4
  5. package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
  6. package/dist/ClickableCard/ClickableCard.js +10 -6
  7. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  8. package/dist/CommandPalette/CommandPalette.js +15 -1
  9. package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
  10. package/dist/CommandPalette/CommandPaletteInput.js +14 -2
  11. package/dist/CommandPalette/busyStartSettle.d.ts +4 -0
  12. package/dist/CommandPalette/busyStartSettle.d.ts.map +1 -0
  13. package/dist/CommandPalette/busyStartSettle.js +23 -0
  14. package/dist/ComplexSelector/ComplexSelector.d.ts +19 -1
  15. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  16. package/dist/ComplexSelector/ComplexSelector.js +19 -4
  17. package/dist/DateInput/Wheel.d.ts.map +1 -1
  18. package/dist/DateInput/Wheel.js +1 -1
  19. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts +10 -5
  20. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
  21. package/dist/DropdownMenu/DropdownMenuRadioItem.js +13 -5
  22. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts +6 -6
  23. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
  24. package/dist/DropdownMenu/DropdownMenuSubMenu.js +0 -3
  25. package/dist/DropdownMenu/menuItemHover.d.ts +3 -0
  26. package/dist/DropdownMenu/menuItemHover.d.ts.map +1 -1
  27. package/dist/DropdownMenu/menuItemHover.js +14 -1
  28. package/dist/Field/PanelSearchInput.d.ts.map +1 -1
  29. package/dist/Field/PanelSearchInput.js +11 -14
  30. package/dist/Field/inputDisabledFocus.d.ts +14 -0
  31. package/dist/Field/inputDisabledFocus.d.ts.map +1 -0
  32. package/dist/Field/inputDisabledFocus.js +19 -0
  33. package/dist/Item/Item.d.ts.map +1 -1
  34. package/dist/Item/Item.js +1 -1
  35. package/dist/Item/useSwipeAction.d.ts.map +1 -1
  36. package/dist/Item/useSwipeAction.js +60 -5
  37. package/dist/Layer/useTouchTrigger.d.ts +14 -1
  38. package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
  39. package/dist/Layer/useTouchTrigger.js +72 -17
  40. package/dist/Lightbox/Lightbox.d.ts +5 -2
  41. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  42. package/dist/Lightbox/Lightbox.js +19 -7
  43. package/dist/Lightbox/LightboxKeyboard.a11y.browser.spec.d.ts +2 -0
  44. package/dist/Lightbox/LightboxKeyboard.a11y.browser.spec.d.ts.map +1 -0
  45. package/dist/Lightbox/LightboxKeyboard.a11y.browser.spec.js +77 -0
  46. package/dist/NumberInput/NumberInput.d.ts +3 -3
  47. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  48. package/dist/NumberInput/NumberInput.js +46 -20
  49. package/dist/Popover/usePopover.d.ts.map +1 -1
  50. package/dist/Popover/usePopover.js +8 -4
  51. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  52. package/dist/SelectableCard/SelectableCard.js +10 -6
  53. package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
  54. package/dist/SideNav/SideNavHeading.js +34 -0
  55. package/dist/Skeleton/Skeleton.d.ts.map +1 -1
  56. package/dist/Skeleton/Skeleton.js +12 -3
  57. package/dist/Slider/Slider.d.ts.map +1 -1
  58. package/dist/Slider/Slider.js +45 -12
  59. package/dist/TextArea/TextArea.d.ts +6 -4
  60. package/dist/TextArea/TextArea.d.ts.map +1 -1
  61. package/dist/TextArea/TextArea.js +14 -11
  62. package/dist/TextInput/TextInput.d.ts +6 -4
  63. package/dist/TextInput/TextInput.d.ts.map +1 -1
  64. package/dist/TextInput/TextInput.js +27 -17
  65. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  66. package/dist/Thumbnail/Thumbnail.js +10 -6
  67. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  68. package/dist/Typeahead/BaseTypeahead.js +16 -4
  69. package/dist/Typeahead/Typeahead.d.ts.map +1 -1
  70. package/dist/Typeahead/Typeahead.js +24 -11
  71. package/dist/astryx.css +9 -9
  72. package/dist/hooks/useAnnounce.d.ts +18 -1
  73. package/dist/hooks/useAnnounce.d.ts.map +1 -1
  74. package/dist/hooks/useAnnounce.js +84 -18
  75. package/dist/hooks/useBusyAnnouncement.d.ts +4 -2
  76. package/dist/hooks/useBusyAnnouncement.d.ts.map +1 -1
  77. package/dist/hooks/useBusyAnnouncement.js +30 -4
  78. package/dist/hooks/useMenuPress.d.ts +2 -1
  79. package/dist/hooks/useMenuPress.d.ts.map +1 -1
  80. package/dist/hooks/useMenuPress.js +12 -3
  81. package/package.json +3 -3
  82. package/src/Badge/Badge.spec.md +207 -0
  83. package/src/Banner/Banner.spec.md +41 -30
  84. package/src/Breadcrumbs/BreadcrumbItem.tsx +5 -0
  85. package/src/Breadcrumbs/Breadcrumbs.test.tsx +22 -0
  86. package/src/Button/Button.test.tsx +7 -0
  87. package/src/Button/Button.tsx +8 -4
  88. package/src/ClickableCard/ClickableCard.doc.mjs +1 -2
  89. package/src/ClickableCard/ClickableCard.test.tsx +14 -3
  90. package/src/ClickableCard/ClickableCard.tsx +44 -28
  91. package/src/CodeBlock/CodeBlock.spec.md +69 -49
  92. package/src/CommandPalette/CommandPalette.tsx +17 -1
  93. package/src/CommandPalette/CommandPaletteInput.tsx +21 -2
  94. package/src/CommandPalette/busyStartSettle.ts +26 -0
  95. package/src/ComplexSelector/ComplexSelector.doc.mjs +1 -1
  96. package/src/ComplexSelector/ComplexSelector.focusableDisabled.test.tsx +1 -1
  97. package/src/ComplexSelector/ComplexSelector.fr10.test.tsx +9 -9
  98. package/src/ComplexSelector/ComplexSelector.spec.md +161 -107
  99. package/src/ComplexSelector/ComplexSelector.test.tsx +77 -16
  100. package/src/ComplexSelector/ComplexSelector.tsx +44 -2
  101. package/src/ComplexSelector/__tests__/ComplexSelector.a11y.chromium.spec.ts +964 -0
  102. package/src/DateInput/DateInputTouch.test.tsx +9 -0
  103. package/src/DateInput/Wheel.tsx +4 -1
  104. package/src/DateInput/__tests__/WheelPinchZoom.a11y.chromium.spec.ts +158 -0
  105. package/src/DropdownMenu/DropdownMenu.test.tsx +27 -1
  106. package/src/DropdownMenu/DropdownMenuRadioItem.doc.mjs +5 -2
  107. package/src/DropdownMenu/DropdownMenuRadioItem.spec.md +226 -0
  108. package/src/DropdownMenu/DropdownMenuRadioItem.tsx +32 -16
  109. package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +158 -0
  110. package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +9 -0
  111. package/src/DropdownMenu/DropdownMenuSubMenu.spec.md +225 -0
  112. package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +48 -0
  113. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +6 -6
  114. package/src/DropdownMenu/__tests__/DropdownMenuRadioItemAudit.a11y.chromium.spec.ts +539 -0
  115. package/src/DropdownMenu/__tests__/DropdownMenuSubMenuAudit.a11y.chromium.spec.ts +670 -0
  116. package/src/DropdownMenu/__tests__/MenuHoverFocus.a11y.chromium.spec.ts +237 -0
  117. package/src/DropdownMenu/menuItemHover.ts +13 -1
  118. package/src/Field/PanelSearchInput.tsx +12 -13
  119. package/src/Field/inputDisabledFocus.ts +28 -0
  120. package/src/HoverCard/HoverCard.test.tsx +93 -3
  121. package/src/Item/Item.test.tsx +118 -0
  122. package/src/Item/Item.tsx +5 -3
  123. package/src/Item/__tests__/ItemSwipePinchZoom.a11y.chromium.spec.ts +185 -0
  124. package/src/Item/useSwipeAction.ts +71 -5
  125. package/src/Layer/__tests__/TouchTrigger.a11y.chromium.spec.ts +199 -0
  126. package/src/Layer/useTouchTrigger.ts +95 -41
  127. package/src/Lightbox/Lightbox.test.tsx +68 -0
  128. package/src/Lightbox/Lightbox.tsx +20 -7
  129. package/src/Lightbox/LightboxKeyboard.a11y.browser.spec.ts +77 -0
  130. package/src/List/ListItem.doc.mjs +3 -3
  131. package/src/Markdown/Markdown.spec.md +15 -8
  132. package/src/MultiSelector/MultiSelector.test.tsx +22 -8
  133. package/src/NumberInput/NumberInput.doc.mjs +6 -6
  134. package/src/NumberInput/NumberInput.test.tsx +144 -14
  135. package/src/NumberInput/NumberInput.tsx +68 -21
  136. package/src/Pagination/Pagination.test.tsx +2 -2
  137. package/src/Popover/Popover.test.tsx +48 -0
  138. package/src/Popover/usePopover.tsx +8 -4
  139. package/src/PowerSearch/PowerSearch.test.tsx +45 -0
  140. package/src/SelectableCard/SelectableCard.doc.mjs +1 -2
  141. package/src/SelectableCard/SelectableCard.test.tsx +11 -1
  142. package/src/SelectableCard/SelectableCard.tsx +44 -28
  143. package/src/Selector/Selector.test.tsx +64 -6
  144. package/src/SideNav/SideNav.test.tsx +71 -8
  145. package/src/SideNav/SideNavHeading.tsx +41 -0
  146. package/src/Skeleton/Skeleton.test.tsx +108 -1
  147. package/src/Skeleton/Skeleton.tsx +30 -2
  148. package/src/Slider/Slider.test.tsx +172 -0
  149. package/src/Slider/Slider.tsx +60 -12
  150. package/src/TabList/TabList.doc.mjs +3 -3
  151. package/src/TextArea/TextArea.doc.mjs +6 -6
  152. package/src/TextArea/TextArea.test.tsx +65 -6
  153. package/src/TextArea/TextArea.tsx +26 -14
  154. package/src/TextInput/TextInput.doc.mjs +8 -8
  155. package/src/TextInput/TextInput.test.tsx +83 -10
  156. package/src/TextInput/TextInput.tsx +38 -19
  157. package/src/Thumbnail/Thumbnail.doc.mjs +1 -2
  158. package/src/Thumbnail/Thumbnail.test.tsx +11 -1
  159. package/src/Thumbnail/Thumbnail.tsx +43 -27
  160. package/src/Tooltip/Tooltip.test.tsx +148 -3
  161. package/src/Tooltip/__tests__/Tooltip.a11y.states.ts +2 -2
  162. package/src/Typeahead/BaseTypeahead.tsx +14 -2
  163. package/src/Typeahead/Typeahead.test.tsx +114 -1
  164. package/src/Typeahead/Typeahead.tsx +27 -14
  165. package/src/__tests__/BusyOwnerAnnouncement.test.tsx +59 -0
  166. package/src/__tests__/CardPress.a11y.chromium.spec.ts +352 -0
  167. package/src/__tests__/DisabledTriggerFocus.a11y.chromium.spec.ts +1 -1
  168. package/src/__tests__/pressState.ts +43 -1
  169. package/src/hooks/useAnnounce.doc.mjs +2 -2
  170. package/src/hooks/useAnnounce.test.tsx +64 -4
  171. package/src/hooks/useAnnounce.ts +91 -19
  172. package/src/hooks/useBusyAnnouncement.adopters.test.tsx +69 -0
  173. package/src/hooks/useBusyAnnouncement.test.tsx +112 -0
  174. package/src/hooks/useBusyAnnouncement.ts +36 -5
  175. package/src/hooks/useMenuPress.doc.mjs +2 -2
  176. package/src/hooks/useMenuPress.test.tsx +5 -2
  177. package/src/hooks/useMenuPress.ts +12 -3
  178. package/src/theme/derivedVarRegistry.test.ts +4 -5
  179. package/src/theme/tokens.test.ts +60 -0
  180. package/src/utils/customPropertyArmLayering.test.ts +131 -0
@@ -1 +1 @@
1
- {"version":3,"file":"BreadcrumbItem.d.ts","sourceRoot":"","sources":["../../src/Breadcrumbs/BreadcrumbItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,EAOZ,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,OAAO,CAAC;AAWf,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAS5C,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,qCAAqC,CAAC;AAM7C,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,8BAA8B,CAAC;AAOrE,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAC/C,SAAS,CAAC,aAAa,CAAC,EACxB,SAAS,CACV;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/B;;;;OAIG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC/C;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAC;IACxC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAsID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,EAC7B,GAAG,EACH,EAAE,EACF,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,SAAS,EAAE,aAAa,EACxB,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,IAAI,EACR,EAAE,mBAAmB,qBAgMrB;yBA/Me,cAAc"}
1
+ {"version":3,"file":"BreadcrumbItem.d.ts","sourceRoot":"","sources":["../../src/Breadcrumbs/BreadcrumbItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,EAOZ,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,OAAO,CAAC;AAWf,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAS5C,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,qCAAqC,CAAC;AAM7C,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,8BAA8B,CAAC;AAQrE,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAC/C,SAAS,CAAC,aAAa,CAAC,EACxB,SAAS,CACV;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/B;;;;OAIG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC/C;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAC;IACxC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAsID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,EAC7B,GAAG,EACH,EAAE,EACF,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,SAAS,EAAE,aAAa,EACxB,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,IAAI,EACR,EAAE,mBAAmB,qBAgMrB;yBA/Me,cAAc"}
@@ -40,6 +40,7 @@ import { renderDropdownItems } from "../DropdownMenu/renderDropdownItems.js";
40
40
  import { DropdownMenuContext, DropdownMenuRootOpenContext } from "../DropdownMenu/DropdownMenuContext.js";
41
41
  import { MENU_ITEM_ROLES, MENU_ITEM_SELECTOR, MENU_BOUNDARY_SELECTOR } from "../DropdownMenu/menuItemRoles.js";
42
42
  import { useMergedRefs } from "../hooks/useMergedRefs.js";
43
+ import { useInteractionModalityTracking } from "../utils/interactionModality.js";
43
44
  // =============================================================================
44
45
  // Props
45
46
  // =============================================================================
@@ -334,6 +335,10 @@ function BreadcrumbMenuTrigger({
334
335
  const triggerId = useId();
335
336
  const buttonRef = useRef(null);
336
337
  const isSupporting = variant === 'supporting';
338
+ // The menu's rows move focus with the last input
339
+ // (`architecture:interaction-modality` INV1); this menu has no press model
340
+ // to activate the tracking they read, so it activates it itself.
341
+ useInteractionModalityTracking();
337
342
  const popover = usePopover({
338
343
  hasLightDismiss: true,
339
344
  hasCloseButton: false,
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/Button/Button.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/Button/Button.tsx"],"names":[],"mappings":"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"}
@@ -555,8 +555,10 @@ export function Button({
555
555
  ...ariaLabelProp,
556
556
  ...describedByProp,
557
557
  ...edgeCompAttr,
558
- "aria-busy": isLoadingState || undefined,
559
- "aria-disabled": useAriaDisabled || undefined,
558
+ // A caller's own busy or disabled state is kept, so a component that
559
+ // hands these props to a Button (a caller-rendered trigger) is heard.
560
+ "aria-busy": isLoadingState || props['aria-busy'] || undefined,
561
+ "aria-disabled": useAriaDisabled || props['aria-disabled'] || undefined,
560
562
  onClick: handleClick,
561
563
  ...(handleKeyDown ? {
562
564
  onKeyDown: handleKeyDown
@@ -574,8 +576,10 @@ export function Button({
574
576
  ...ariaLabelProp,
575
577
  ...describedByProp,
576
578
  ...edgeCompAttr,
577
- "aria-busy": isLoadingState || undefined,
578
- "aria-disabled": useAriaDisabled || undefined,
579
+ // A caller's own busy or disabled state is kept, so a component that
580
+ // hands these props to a Button (a caller-rendered trigger) is heard.
581
+ "aria-busy": isLoadingState || props['aria-busy'] || undefined,
582
+ "aria-disabled": useAriaDisabled || props['aria-disabled'] || undefined,
579
583
  onClick: handleClick,
580
584
  ...(handleKeyDown ? {
581
585
  onKeyDown: handleKeyDown
@@ -1 +1 @@
1
- {"version":3,"file":"ClickableCard.d.ts","sourceRoot":"","sources":["../../src/ClickableCard/ClickableCard.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAC,KAAK,SAAS,EAAE,KAAK,UAAU,EAAU,KAAK,GAAG,EAAC,MAAM,OAAO,CAAC;AASxE,OAAO,KAAK,EAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAGtE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAwI5C,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD,yCAAyC;IACzC,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAE1B;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAEnD;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,yBAAyB;IACzB,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,0BAA0B;IAC1B,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,IAAI,EACJ,MAAM,EACN,UAAkB,EAClB,QAAQ,EACR,OAAO,EACP,OAAmB,EACnB,SAAkB,EAClB,KAAK,EACL,MAAM,EACN,QAAQ,EACR,GAAG,EACH,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,aAAa,EACxB,KAAK,EACL,GAAG,KAAK,EACT,EAAE,kBAAkB,+BAyFpB;yBA5Ge,aAAa"}
1
+ {"version":3,"file":"ClickableCard.d.ts","sourceRoot":"","sources":["../../src/ClickableCard/ClickableCard.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAC,KAAK,SAAS,EAAE,KAAK,UAAU,EAAU,KAAK,GAAG,EAAC,MAAM,OAAO,CAAC;AASxE,OAAO,KAAK,EAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAGtE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAwJ5C,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD,yCAAyC;IACzC,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAE1B;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAEnD;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,yBAAyB;IACzB,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,0BAA0B;IAC1B,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,IAAI,EACJ,MAAM,EACN,UAAkB,EAClB,QAAQ,EACR,OAAO,EACP,OAAmB,EACnB,SAAkB,EAClB,KAAK,EACL,MAAM,EACN,QAAQ,EACR,GAAG,EACH,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,aAAa,EACxB,KAAK,EACL,GAAG,KAAK,EACT,EAAE,kBAAkB,+BAyFpB;yBA5Ge,aAAa"}
@@ -51,7 +51,11 @@ import { disabledInteractionProps } from "../utils/disabledInteraction.js";
51
51
  // 1 while on and 1 → 0 over the release, and inherited resolved by the
52
52
  // `::after` that paints it. See interactionOverlay.stylex.ts.
53
53
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
54
- const pressedOverlayColor = 'var(--_press-paint)';
54
+ const pressedOverlayImage = 'var(--_press-paint-image)';
55
+ /** Written by the press controller while it paints a press. */
56
+ const PRESSED_ON = '[data-astryx-press="on"]';
57
+ /** Written by the press controller for the press's release. */
58
+ const PRESSED_FADING = '[data-astryx-press="fading"]';
55
59
  const styles = {
56
60
  interactive: {
57
61
  kVAEAm: "x1n2onr6",
@@ -61,16 +65,16 @@ const styles = {
61
65
  $$css: true
62
66
  },
63
67
  overlay: {
64
- "--_press-overlay": "x1s9pv7w xb8awce x1a5qima x1sad4of x1s2lk0z xmfmiv1 x1hn5ov8",
65
- "--_press-overlay-transition": "x1wkyqe6 xbb2ue6 x1wphrdb",
68
+ "--_press-overlay": "x1s9pv7w xb8awce x1a5qima xmfmiv1 x1hn5ov8",
66
69
  k5JduY: "x1s928wv",
67
70
  kwXMNM: "x1j6awrg",
68
71
  kv0HGH: "xarstr8",
69
72
  kloYau: "x2q1x1w",
70
- kRicXK: "x1ywzrc5",
71
- kPNhGg: "x18w5vxb",
73
+ kRicXK: "x1ywzrc5 x1xg7wox x15tr235",
74
+ kPNhGg: "x97pup0",
72
75
  kA8PQs: "x1dlmc9c",
73
- ks3ayO: "x1l0fnur",
76
+ ks3ayO: "x1l0fnur x1l0866b x7bosnz",
77
+ kNctxI: "x1rd1oi2 xlif165",
74
78
  $$css: true
75
79
  },
76
80
  borderless: {
@@ -1 +1 @@
1
- {"version":3,"file":"CommandPalette.d.ts","sourceRoot":"","sources":["../../src/CommandPalette/CommandPalette.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AAEH,OAAO,EASL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAC,YAAY,EAAE,cAAc,EAAC,MAAM,cAAc,CAAC;AAU/D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAK5C,MAAM,WAAW,mBAAmB,CAClC,CAAC,SAAS,cAAc,GAAG,cAAc,CACzC,SAAQ,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IACtD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC,2CAA2C;IAC3C,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,0DAA0D;IAC1D,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAExC;;;;OAIG;IACH,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAE9B;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,KAAK,SAAS,CAAC;IAEzD;;;OAGG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC;IAE5B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAE/B,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,8CAA8C;IAC9C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B;AAiID;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EACxE,GAAG,EACH,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,MAAM,EACN,UAAU,EACV,eAAe,EAAE,wBAAwB,EACzC,kBAAkB,EAAE,2BAA2B,EAC/C,KAAK,EAAE,eAAe,EACtB,aAAa,EACb,KAAK,EAAE,cAAc,EACrB,KAAW,EACX,SAAe,EACf,GAAG,IAAI,EACR,EAAE,mBAAmB,CAAC,CAAC,CAAC,+BAsYxB;yBAvZe,cAAc"}
1
+ {"version":3,"file":"CommandPalette.d.ts","sourceRoot":"","sources":["../../src/CommandPalette/CommandPalette.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AAEH,OAAO,EASL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAC,YAAY,EAAE,cAAc,EAAC,MAAM,cAAc,CAAC;AAW/D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAK5C,MAAM,WAAW,mBAAmB,CAClC,CAAC,SAAS,cAAc,GAAG,cAAc,CACzC,SAAQ,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IACtD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC,2CAA2C;IAC3C,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,0DAA0D;IAC1D,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAExC;;;;OAIG;IACH,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAE9B;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,KAAK,SAAS,CAAC;IAEzD;;;OAGG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC;IAE5B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAE/B,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,8CAA8C;IAC9C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B;AAiID;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EACxE,GAAG,EACH,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,MAAM,EACN,UAAU,EACV,eAAe,EAAE,wBAAwB,EACzC,kBAAkB,EAAE,2BAA2B,EAC/C,KAAK,EAAE,eAAe,EACtB,aAAa,EACb,KAAK,EAAE,cAAc,EACrB,KAAW,EACX,SAAe,EACf,GAAG,IAAI,EACR,EAAE,mBAAmB,CAAC,CAAC,CAAC,+BAqZxB;yBAtae,cAAc"}
@@ -18,6 +18,7 @@ import { Dialog } from "../Dialog/index.js";
18
18
  import { Layout, LayoutHeader, LayoutContent, LayoutFooter } from "../Layout/index.js";
19
19
  import { useCombobox } from "../Selector/index.js";
20
20
  import { CommandPaletteContext } from "./CommandPaletteContext.js";
21
+ import { BusyStartSettleContext } from "./busyStartSettle.js";
21
22
  import { CommandPaletteList } from "./CommandPaletteList.js";
22
23
  import { CommandPaletteItem } from "./CommandPaletteItem.js";
23
24
  import { CommandPaletteGroup } from "./CommandPaletteGroup.js";
@@ -204,6 +205,10 @@ export function CommandPalette({
204
205
  const isBusy = isPending;
205
206
  const searchVersionRef = useRef(0);
206
207
  const emptyStateRef = useRef(null);
208
+ const settleBusyAnnouncementRef = useRef(null);
209
+ const registerBusyAnnouncementSettle = useCallback(settle => {
210
+ settleBusyAnnouncementRef.current = settle;
211
+ }, []);
207
212
 
208
213
  // Announce search results to screen readers through the shared polite live
209
214
  // region (comboboxes-7 announce path, mirroring Selector / BaseTypeahead).
@@ -289,6 +294,12 @@ export function CommandPalette({
289
294
  const result = isBootstrap ? searchSource.bootstrap() : searchSource.search(query);
290
295
  const items = await Promise.resolve(result);
291
296
  if (searchVersionRef.current === version) {
297
+ if (!isBootstrap) {
298
+ // This query's outcome is announced below (a count) or from the
299
+ // rendered empty state; a busy start not yet announced would
300
+ // follow it, so the input drops it (spec:AST-086 FR8).
301
+ settleBusyAnnouncementRef.current?.();
302
+ }
292
303
  // Commit query and results together
293
304
  setSearch(query);
294
305
  setOptimisticResults(items);
@@ -479,7 +490,10 @@ export function CommandPalette({
479
490
  header: /*#__PURE__*/_jsx(LayoutHeader, {
480
491
  hasDivider: true,
481
492
  padding: 0,
482
- children: input ?? /*#__PURE__*/_jsx(CommandPaletteInput, {})
493
+ children: /*#__PURE__*/_jsx(BusyStartSettleContext, {
494
+ value: registerBusyAnnouncementSettle,
495
+ children: input ?? /*#__PURE__*/_jsx(CommandPaletteInput, {})
496
+ })
483
497
  }),
484
498
  content: /*#__PURE__*/_jsx(LayoutContent, {
485
499
  padding: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"CommandPaletteInput.d.ts","sourceRoot":"","sources":["../../src/CommandPalette/CommandPaletteInput.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AAEH,OAAO,EAA2C,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAa/E,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAuE5C,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CACpD,SAAS,CAAC,gBAAgB,CAAC,EAC3B,UAAU,CACX;IACC,iEAAiE;IACjE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAElC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;CACvD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EAAE,eAAe,EACtB,aAAa,EACb,WAAW,EAAE,oBAAoB,EACjC,KAAK,EACL,YAAmB,EACnB,UAAU,EACV,QAAQ,EACR,SAAS,EACT,OAAO,EACP,MAAM,EACN,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,wBAAwB,+BA2K1B;yBA3Le,mBAAmB"}
1
+ {"version":3,"file":"CommandPaletteInput.d.ts","sourceRoot":"","sources":["../../src/CommandPalette/CommandPaletteInput.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AAEH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAcf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAuE5C,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CACpD,SAAS,CAAC,gBAAgB,CAAC,EAC3B,UAAU,CACX;IACC,iEAAiE;IACjE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAElC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;CACvD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EAAE,eAAe,EACtB,aAAa,EACb,WAAW,EAAE,oBAAoB,EACjC,KAAK,EACL,YAAmB,EACnB,UAAU,EACV,QAAQ,EACR,SAAS,EACT,OAAO,EACP,MAAM,EACN,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,wBAAwB,+BAsL1B;yBAtMe,mBAAmB"}
@@ -13,7 +13,7 @@
13
13
  * - /apps/storybook/stories/CommandPaletteInput.stories.tsx
14
14
  * - /packages/cli/assets/templates/blocks/components/CommandPalette/ (showcase blocks)
15
15
  */
16
- import { useCallback, useEffect, useRef, useState } from 'react';
16
+ import { use, useCallback, useEffect, useRef, useState } from 'react';
17
17
  import * as stylex from '@stylexjs/stylex';
18
18
  import { Icon } from "../Icon/index.js";
19
19
  import { Spinner } from "../Spinner/index.js";
@@ -21,6 +21,7 @@ import { isImeKeyEvent, isRenderable, mergeProps } from "../utils/index.js";
21
21
  import "../theme/tokens.stylex.js";
22
22
  import { colorVars, typeScaleVars, spacingVars, typographyVars } from "../theme/tokens.stylex.js";
23
23
  import { useCommandPaletteContext } from "./CommandPaletteContext.js";
24
+ import { BusyStartSettleContext } from "./busyStartSettle.js";
24
25
  import { useDialogContext } from "../Dialog/DialogContext.js";
25
26
  import { themeProps } from "../utils/themeProps.js";
26
27
  import { focusOutlineProps } from "../utils/focusOutline.stylex.js";
@@ -101,7 +102,18 @@ export function CommandPaletteInput({
101
102
  // The search Spinner is decorative; the input announces each busy start,
102
103
  // including the load on opening or clearing the query. Inside the palette's
103
104
  // native modal it does so from a region in the dialog (spec:AST-086 FR8, FR3).
104
- useBusyAnnouncement(ctx?.isBusy === true, t('@astryx.commandPalette.loading'), inputRef);
105
+ const settleBusyAnnouncement = useBusyAnnouncement(ctx?.isBusy === true, t('@astryx.commandPalette.loading'), inputRef);
106
+ // Keeps the palette holding this input's settle function, so the palette can
107
+ // drop a busy start not yet announced when a search's outcome is about to be
108
+ // announced (spec:AST-086 FR8).
109
+ const registerSettle = use(BusyStartSettleContext);
110
+ useEffect(() => {
111
+ if (registerSettle == null) {
112
+ return;
113
+ }
114
+ registerSettle(settleBusyAnnouncement);
115
+ return () => registerSettle(null);
116
+ }, [registerSettle, settleBusyAnnouncement]);
105
117
  const [isKeyboardFocus, setIsKeyboardFocus] = useState(false);
106
118
 
107
119
  // Text-entry controls match :focus-visible after pointer focus in Chromium.
@@ -0,0 +1,4 @@
1
+ /** Registers the input's settle function, or `null` when the input goes away. */
2
+ export type RegisterBusyStartSettle = (settle: (() => void) | null) => void;
3
+ export declare const BusyStartSettleContext: import("react").Context<RegisterBusyStartSettle | null>;
4
+ //# sourceMappingURL=busyStartSettle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"busyStartSettle.d.ts","sourceRoot":"","sources":["../../src/CommandPalette/busyStartSettle.ts"],"names":[],"mappings":"AAoBA,iFAAiF;AACjF,MAAM,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;AAE5E,eAAO,MAAM,sBAAsB,yDACkB,CAAC"}
@@ -0,0 +1,23 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ 'use client';
4
+
5
+ /**
6
+ * @file busyStartSettle.ts
7
+ * @input The palette's registration for its input's busy-start settle function
8
+ * @output Context the input uses to register that function
9
+ * @position Package-internal; not exported from the package entry point
10
+ *
11
+ * The input owns the search's busy start; the palette is the only thing that
12
+ * knows when a search's outcome is about to be announced, and so when a busy
13
+ * start not yet announced has to be dropped (`spec:AST-086` FR8). A context
14
+ * rather than a member of `CommandPaletteContextValue`, which is exported:
15
+ * this module is not exported from `index.ts`, so the seam stays closed by
16
+ * module boundary.
17
+ */
18
+ import { createContext } from 'react';
19
+
20
+ /** Registers the input's settle function, or `null` when the input goes away. */
21
+
22
+ export const BusyStartSettleContext = /*#__PURE__*/createContext(null);
23
+ BusyStartSettleContext.displayName = 'BusyStartSettleContext';
@@ -26,7 +26,7 @@ export type ComplexSelectorSize = 'sm' | 'md' | 'lg';
26
26
  * Spread them onto that control: it becomes the popup's anchor, the element
27
27
  * focus returns to, and the control that announces the popup's state.
28
28
  */
29
- export interface ComplexSelectorRenderTriggerProps extends Omit<FieldInputBaseProps, keyof FieldPartStyleProps | 'id' | 'onClick' | 'onKeyDown' | 'aria-haspopup' | 'aria-expanded' | 'aria-controls' | 'aria-busy'> {
29
+ export interface ComplexSelectorRenderTriggerProps extends Omit<FieldInputBaseProps, keyof FieldPartStyleProps | 'id' | 'onClick' | 'onKeyDown' | 'role' | 'aria-label' | 'aria-haspopup' | 'aria-expanded' | 'aria-controls' | 'aria-busy' | 'aria-required' | 'aria-disabled'> {
30
30
  /**
31
31
  * Attaches the control as the popup's anchor and focus-return target, and
32
32
  * forwards it to the selector's own `ref`.
@@ -41,6 +41,24 @@ export interface ComplexSelectorRenderTriggerProps extends Omit<FieldInputBasePr
41
41
  'aria-expanded': boolean;
42
42
  'aria-controls': string;
43
43
  'aria-busy': boolean | undefined;
44
+ /**
45
+ * The control is the selector's field: a combobox whose popup is a dialog,
46
+ * as on the built-in trigger.
47
+ */
48
+ role: 'combobox';
49
+ /**
50
+ * The field's `label`, unless the selector was given `aria-label` or
51
+ * `aria-labelledby`: a combobox takes no name from its content, so the
52
+ * label names the control as it names the built-in trigger.
53
+ */
54
+ 'aria-label': string | undefined;
55
+ /** `'true'` when the field is required. */
56
+ 'aria-required': 'true' | undefined;
57
+ /**
58
+ * `'true'` when the selector is disabled. The control keeps its tab stop
59
+ * and the popup does not open (`spec:AST-085`).
60
+ */
61
+ 'aria-disabled': 'true' | undefined;
44
62
  }
45
63
  export interface ComplexSelectorRenderState {
46
64
  /** Whether the selector surface is open. */
@@ -1 +1 @@
1
- {"version":3,"file":"ComplexSelector.d.ts","sourceRoot":"","sources":["../../src/ComplexSelector/ComplexSelector.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,EAOZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAA4B,KAAK,kBAAkB,EAAC,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAuB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAI5D,OAAO,KAAK,EAAC,cAAc,EAAE,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAmBtE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAwK9C,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,CAAC;AAErE,MAAM,MAAM,mBAAmB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAMrD;;;;;GAKG;AACH,MAAM,WAAW,iCAAkC,SAAQ,IAAI,CAC7D,mBAAmB,EACjB,MAAM,mBAAmB,GACzB,IAAI,GACJ,SAAS,GACT,WAAW,GACX,eAAe,GACf,eAAe,GACf,eAAe,GACf,WAAW,CACd;IACC;;;OAGG;IACH,GAAG,EAAE,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3C,wDAAwD;IACxD,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACxD,oEAAoE;IACpE,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC7D,eAAe,EAAE,QAAQ,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC;CAClC;AAED,MAAM,WAAW,0BAA0B;IACzC,4CAA4C;IAC5C,MAAM,EAAE,OAAO,CAAC;IAChB,iDAAiD;IACjD,MAAM,EAAE,OAAO,CAAC;IAChB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC,sEAAsE;IACtE,IAAI,IAAI,IAAI,CAAC;IACb,iEAAiE;IACjE,KAAK,IAAI,IAAI,CAAC;IACd,kDAAkD;IAClD,MAAM,IAAI,IAAI,CAAC;IACf,wEAAwE;IACxE,MAAM,IAAI,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB,CAAC,KAAK,CAAE,SAAQ,IAAI,CACvD,mBAAmB,EACnB,UAAU,GAAG,UAAU,CACxB;IACC,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC/C;;;;;OAKG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACpD,gCAAgC;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,sDAAsD;IACtD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAClC,kEAAkE;IAClE,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,wEAAwE;IACxE,QAAQ,EAAE,CACR,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAChC,KAAK,EAAE,MAAM,IAAI,EACjB,KAAK,EAAE,0BAA0B,KAC9B,SAAS,CAAC;IACf,iDAAiD;IACjD,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,sDAAsD;IACtD,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,gDAAgD;IAChD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gCAAgC;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6BAA6B;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yBAAyB;IACzB,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B;;;OAGG;IACH,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,kDAAkD;IAClD,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACjC,0BAA0B;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,uBAAuB;IACvB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,gDAAgD;IAChD,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B;;;;OAIG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAC7C;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,iCAAiC,KAAK,SAAS,CAAC;IACxE;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,qDAAqD;IACrD,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,EACrC,KAAK,EACL,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,WAAW,EAAE,oBAAoB,EACjC,aAAqB,EACrB,WAAW,EACX,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EAClB,SAAiB,EACjB,MAAM,EACN,aAA0B,EAC1B,YAAY,EACZ,IAAW,EACX,OAAiB,EACjB,SAAS,EACT,KAAK,EACL,SAAmB,EACnB,SAAmB,EACnB,SAAS,EACT,aAAa,EACb,YAAY,EACZ,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,GAAG,EACH,EAAE,EACF,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,kBAAkB,EAAE,mBAAmB,EACvC,GAAG,SAAS,EACb,EAAE,oBAAoB,CAAC,KAAK,CAAC,qBAwV7B;yBA/Xe,eAAe"}
1
+ {"version":3,"file":"ComplexSelector.d.ts","sourceRoot":"","sources":["../../src/ComplexSelector/ComplexSelector.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,EAOZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAA4B,KAAK,kBAAkB,EAAC,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAuB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAI5D,OAAO,KAAK,EAAC,cAAc,EAAE,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAmBtE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAwK9C,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,CAAC;AAErE,MAAM,MAAM,mBAAmB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAMrD;;;;;GAKG;AACH,MAAM,WAAW,iCAAkC,SAAQ,IAAI,CAC7D,mBAAmB,EACjB,MAAM,mBAAmB,GACzB,IAAI,GACJ,SAAS,GACT,WAAW,GACX,MAAM,GACN,YAAY,GACZ,eAAe,GACf,eAAe,GACf,eAAe,GACf,WAAW,GACX,eAAe,GACf,eAAe,CAClB;IACC;;;OAGG;IACH,GAAG,EAAE,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3C,wDAAwD;IACxD,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACxD,oEAAoE;IACpE,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC7D,eAAe,EAAE,QAAQ,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC;;;OAGG;IACH,IAAI,EAAE,UAAU,CAAC;IACjB;;;;OAIG;IACH,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,2CAA2C;IAC3C,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC;;;OAGG;IACH,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED,MAAM,WAAW,0BAA0B;IACzC,4CAA4C;IAC5C,MAAM,EAAE,OAAO,CAAC;IAChB,iDAAiD;IACjD,MAAM,EAAE,OAAO,CAAC;IAChB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC,sEAAsE;IACtE,IAAI,IAAI,IAAI,CAAC;IACb,iEAAiE;IACjE,KAAK,IAAI,IAAI,CAAC;IACd,kDAAkD;IAClD,MAAM,IAAI,IAAI,CAAC;IACf,wEAAwE;IACxE,MAAM,IAAI,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB,CAAC,KAAK,CAAE,SAAQ,IAAI,CACvD,mBAAmB,EACnB,UAAU,GAAG,UAAU,CACxB;IACC,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC/C;;;;;OAKG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACpD,gCAAgC;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,sDAAsD;IACtD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAClC,kEAAkE;IAClE,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,wEAAwE;IACxE,QAAQ,EAAE,CACR,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAChC,KAAK,EAAE,MAAM,IAAI,EACjB,KAAK,EAAE,0BAA0B,KAC9B,SAAS,CAAC;IACf,iDAAiD;IACjD,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,sDAAsD;IACtD,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,gDAAgD;IAChD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gCAAgC;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6BAA6B;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yBAAyB;IACzB,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B;;;OAGG;IACH,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,kDAAkD;IAClD,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACjC,0BAA0B;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,uBAAuB;IACvB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,gDAAgD;IAChD,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B;;;;OAIG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAC7C;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,iCAAiC,KAAK,SAAS,CAAC;IACxE;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,qDAAqD;IACrD,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,EACrC,KAAK,EACL,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,WAAW,EAAE,oBAAoB,EACjC,aAAqB,EACrB,WAAW,EACX,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EAClB,SAAiB,EACjB,MAAM,EACN,aAA0B,EAC1B,YAAY,EACZ,IAAW,EACX,OAAiB,EACjB,SAAS,EACT,KAAK,EACL,SAAmB,EACnB,SAAmB,EACnB,SAAS,EACT,aAAa,EACb,YAAY,EACZ,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,GAAG,EACH,EAAE,EACF,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,kBAAkB,EAAE,mBAAmB,EACvC,GAAG,SAAS,EACb,EAAE,oBAAoB,CAAC,KAAK,CAAC,qBA4W7B;yBAnZe,eAAe"}
@@ -413,12 +413,23 @@ export function ComplexSelector({
413
413
  id: triggerId,
414
414
  // This path never forwarded caller handlers before, so the newly
415
415
  // forwarded ones compose component first and cannot cancel opening.
416
- onClick: composeEventHandlers(handleTriggerClick, onClickProp),
417
- onKeyDown: composeEventHandlers(handleTriggerKeyDown, onKeyDownProp),
416
+ // A disabled control keeps its tab stop but invokes no callback
417
+ // (`spec:AST-085` FR2), as on the built-in trigger.
418
+ onClick: isDisabled ? swallowDisabledPress : composeEventHandlers(handleTriggerClick, onClickProp),
419
+ onKeyDown: isDisabled ? handleTriggerKeyDown : composeEventHandlers(handleTriggerKeyDown, onKeyDownProp),
420
+ // The caller's control is the field, so it carries the field's role
421
+ // and state as the built-in trigger does.
422
+ role: 'combobox',
423
+ // A combobox takes no name from its content, so the field's label
424
+ // names the control, as it names the built-in trigger and the popup.
425
+ // A name passed to the selector wins.
426
+ 'aria-label': rest['aria-label'] ?? (rest['aria-labelledby'] != null ? undefined : label),
418
427
  'aria-haspopup': 'dialog',
419
428
  'aria-expanded': isOpen,
420
429
  'aria-controls': contentId,
421
- 'aria-busy': isBusy || undefined
430
+ 'aria-busy': isBusy || undefined,
431
+ 'aria-required': isEffectivelyRequired ? 'true' : undefined,
432
+ 'aria-disabled': isDisabled ? 'true' : undefined
422
433
  };
423
434
  return /*#__PURE__*/_jsxs(_Fragment, {
424
435
  children: [renderTrigger(triggerProps), popup]
@@ -443,7 +454,11 @@ export function ComplexSelector({
443
454
  ...rest,
444
455
  ref: triggerButtonRef,
445
456
  id: triggerId,
446
- type: "button",
457
+ type: "button"
458
+ // The trigger is the field's control: a combobox whose popup is a
459
+ // dialog, so required and disabled state are valid on it.
460
+ ,
461
+ role: "combobox",
447
462
  "aria-haspopup": "dialog",
448
463
  "aria-expanded": isOpen,
449
464
  "aria-controls": contentId
@@ -1 +1 @@
1
- {"version":3,"file":"Wheel.d.ts","sourceRoot":"","sources":["../../src/DateInput/Wheel.tsx"],"names":[],"mappings":"AA2MA,MAAM,WAAW,WAAW;IAC1B,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACpC,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAe,GAChB,EAAE,UAAU,+BAgOZ;yBAtOe,KAAK"}
1
+ {"version":3,"file":"Wheel.d.ts","sourceRoot":"","sources":["../../src/DateInput/Wheel.tsx"],"names":[],"mappings":"AA8MA,MAAM,WAAW,WAAW;IAC1B,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACpC,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAe,GAChB,EAAE,UAAU,+BAgOZ;yBAtOe,KAAK"}
@@ -68,7 +68,7 @@ const styles = {
68
68
  kmaZ5I: "x1oyok0e",
69
69
  k5wCbM: "x1rohswg",
70
70
  kI3sdo: "x1a2a7pz",
71
- kFalU9: "xx69xxh",
71
+ kFalU9: "xge0x1e",
72
72
  $$css: true
73
73
  }
74
74
  };
@@ -8,7 +8,8 @@
8
8
  * (role="menuitemradio"). The row owns the role and aria-checked; there is no
9
9
  * nested native <input> (per the WAI-ARIA menuitemradio pattern). Selection
10
10
  * state + onChange come from DropdownMenuRadioGroupContext. Keyboard nav +
11
- * Enter/Space activation come from the parent DropdownMenu.
11
+ * Enter/Space activation come from the parent DropdownMenu. Caller onClick and
12
+ * onPointerMove run after the row's own selection and hover focus.
12
13
  *
13
14
  * The round radio visual is the shared radio indicator, decorative
14
15
  * (aria-hidden) — the row owns the checked state, and menu radios pick up the
@@ -39,9 +40,9 @@ export interface DropdownMenuRadioItemProps extends Omit<BaseProps, 'role' | 'ar
39
40
  */
40
41
  icon?: ReactNode | IconType;
41
42
  /**
42
- * Whether this individual radio item is disabled. Disabled items stay
43
- * focusable (via `aria-disabled`) so they remain discoverable by keyboard
44
- * and assistive technology, but selection is blocked.
43
+ * Whether this individual radio item is disabled. Disabled items expose
44
+ * `aria-disabled`, block selection, and are currently skipped by
45
+ * DropdownMenu arrow-key navigation.
45
46
  * @default false
46
47
  */
47
48
  isDisabled?: boolean;
@@ -56,6 +57,10 @@ export interface DropdownMenuRadioItemProps extends Omit<BaseProps, 'role' | 'ar
56
57
  /**
57
58
  * A single option in a DropdownMenuRadioGroup (role="menuitemradio").
58
59
  *
60
+ * Consumer click and pointer-move handlers compose after the row's own
61
+ * selection and hover-focus behavior; disabled activation stops before the
62
+ * consumer click handler.
63
+ *
59
64
  * @example
60
65
  * ```
61
66
  * <DropdownMenuRadioGroup value={sort} onChange={setSort} label="Sort by">
@@ -64,7 +69,7 @@ export interface DropdownMenuRadioItemProps extends Omit<BaseProps, 'role' | 'ar
64
69
  * </DropdownMenuRadioGroup>
65
70
  * ```
66
71
  */
67
- export declare function DropdownMenuRadioItem({ value, label, description, icon, isDisabled, endContent, xstyle, className, style, ...rest }: DropdownMenuRadioItemProps): import("react").JSX.Element;
72
+ export declare function DropdownMenuRadioItem({ value, label, description, icon, isDisabled, endContent, xstyle, className, style, onClick, onPointerMove, ...rest }: DropdownMenuRadioItemProps): import("react").JSX.Element;
68
73
  export declare namespace DropdownMenuRadioItem {
69
74
  var displayName: string;
70
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenuRadioItem.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenuRadioItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAiC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAErE,OAAO,EAAiB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAOtD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA4C5C,MAAM,WAAW,0BAA2B,SAAQ,IAAI,CACtD,SAAS,EACT,MAAM,GAAG,cAAc,GAAG,UAAU,CACrC;IACC;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,mFAAmF;IACnF,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,KAAK,EACL,WAAW,EACX,IAAI,EACJ,UAAkB,EAClB,UAAU,EACV,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE,0BAA0B,+BAmE5B;yBA9Ee,qBAAqB"}
1
+ {"version":3,"file":"DropdownMenuRadioItem.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenuRadioItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAiB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAOtD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA4C5C,MAAM,WAAW,0BAA2B,SAAQ,IAAI,CACtD,SAAS,EACT,MAAM,GAAG,cAAc,GAAG,UAAU,CACrC;IACC;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,mFAAmF;IACnF,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,KAAK,EACL,WAAW,EACX,IAAI,EACJ,UAAkB,EAClB,UAAU,EACV,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EACP,aAAa,EACb,GAAG,IAAI,EACR,EAAE,0BAA0B,+BAuE5B;yBApFe,qBAAqB"}
@@ -12,7 +12,8 @@
12
12
  * (role="menuitemradio"). The row owns the role and aria-checked; there is no
13
13
  * nested native <input> (per the WAI-ARIA menuitemradio pattern). Selection
14
14
  * state + onChange come from DropdownMenuRadioGroupContext. Keyboard nav +
15
- * Enter/Space activation come from the parent DropdownMenu.
15
+ * Enter/Space activation come from the parent DropdownMenu. Caller onClick and
16
+ * onPointerMove run after the row's own selection and hover focus.
16
17
  *
17
18
  * The round radio visual is the shared radio indicator, decorative
18
19
  * (aria-hidden) — the row owns the checked state, and menu radios pick up the
@@ -29,7 +30,7 @@ import { useDropdownMenuContext } from "./DropdownMenuContext.js";
29
30
  import { focusMenuItemOnHover } from "./menuItemHover.js";
30
31
  import "../theme/tokens.stylex.js";
31
32
  import { colorVars, spacingVars } from "../theme/tokens.stylex.js";
32
- import { mergeProps, themeProps } from "../utils/index.js";
33
+ import { composeEventHandlers, mergeProps, themeProps } from "../utils/index.js";
33
34
  import { useDropdownMenuRadioGroupContext } from "./DropdownMenuContext.js";
34
35
  import { jsx as _jsx } from "react/jsx-runtime";
35
36
  const styles = {
@@ -61,6 +62,10 @@ const styles = {
61
62
  /**
62
63
  * A single option in a DropdownMenuRadioGroup (role="menuitemradio").
63
64
  *
65
+ * Consumer click and pointer-move handlers compose after the row's own
66
+ * selection and hover-focus behavior; disabled activation stops before the
67
+ * consumer click handler.
68
+ *
64
69
  * @example
65
70
  * ```
66
71
  * <DropdownMenuRadioGroup value={sort} onChange={setSort} label="Sort by">
@@ -79,6 +84,8 @@ export function DropdownMenuRadioItem({
79
84
  xstyle,
80
85
  className,
81
86
  style,
87
+ onClick,
88
+ onPointerMove,
82
89
  ...rest
83
90
  }) {
84
91
  const menuCtx = useDropdownMenuContext();
@@ -90,7 +97,7 @@ export function DropdownMenuRadioItem({
90
97
  const controlSize = menuSize === 'sm' ? 'sm' : 'md';
91
98
  const isChecked = groupCtx.value === value;
92
99
  const RadioControl = useIndicator('radio');
93
- const handleClick = useCallback(() => {
100
+ const handleClick = useCallback(event => {
94
101
  if (isDisabled) {
95
102
  return;
96
103
  }
@@ -98,14 +105,15 @@ export function DropdownMenuRadioItem({
98
105
  if (groupCtx.hasCloseOnSelect) {
99
106
  menuCtx?.closeMenu();
100
107
  }
101
- }, [isDisabled, groupCtx, value, menuCtx]);
108
+ onClick?.(event);
109
+ }, [isDisabled, groupCtx, value, menuCtx, onClick]);
102
110
  const handlePointerMove = useCallback(e => focusMenuItemOnHover(e, isDisabled), [isDisabled]);
103
111
  return /*#__PURE__*/_jsx(Item, {
104
112
  ...rest,
105
113
  role: "menuitemradio",
106
114
  "aria-checked": isChecked,
107
115
  tabIndex: isDisabled ? undefined : -1,
108
- onPointerMove: handlePointerMove,
116
+ onPointerMove: composeEventHandlers(handlePointerMove, onPointerMove),
109
117
  marker:
110
118
  /*#__PURE__*/
111
119
  // No wrapper — see DropdownMenuCheckboxItem: the target belongs on the
@@ -36,9 +36,6 @@
36
36
  * the row. The list keeps this level's own roving focus, typeahead and press
37
37
  * model, so nothing beside the row needs to know.
38
38
  *
39
- * Prior art: legacy internal XDS `XDSDropdownSubMenuItem` (APG menubar-
40
- * navigation submenu). This re-expresses the same contract on Astryx primitives.
41
- *
42
39
  * SYNC: When modified, update these files to stay in sync:
43
40
  * - /packages/core/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs
44
41
  * - /packages/core/src/DropdownMenu/DropdownMenuSubMenu.test.tsx
@@ -65,7 +62,7 @@ interface DropdownMenuSubMenuBaseProps extends Omit<BaseProps, 'role' | 'tabInde
65
62
  isDisabled?: boolean;
66
63
  /**
67
64
  * Show a spinner in place of the caret, e.g. while a lazy submenu's children
68
- * are loading. Ported from the legacy `hasSpinner` async-submenu affordance.
65
+ * are loading.
69
66
  * @default false
70
67
  */
71
68
  hasSpinner?: boolean;
@@ -82,7 +79,7 @@ interface DropdownMenuSubMenuBaseProps extends Omit<BaseProps, 'role' | 'tabInde
82
79
  * box; `adaptive` drills in when a finger opened the menu — a
83
80
  * `(pointer: coarse)` device, decided when the menu opened — and flies out
84
81
  * otherwise. Drill-in needs a `DropdownMenu` or `ContextMenu` root.
85
- * 'adaptive'
82
+ * @default 'adaptive'
86
83
  */
87
84
  presentation?: DropdownMenuSubMenuPresentation;
88
85
  /**
@@ -104,7 +101,10 @@ interface DropdownMenuSubMenuBaseProps extends Omit<BaseProps, 'role' | 'tabInde
104
101
  footer?: ReactNode;
105
102
  /** Test id for the trigger row. */
106
103
  'data-testid'?: string;
107
- /** Test id for the flyout menu. */
104
+ /**
105
+ * Test id for the sub-menu's own `role="menu"` element: the flyout, or the
106
+ * drilled-in list on a phone.
107
+ */
108
108
  menuDataTestId?: string;
109
109
  /**
110
110
  * Ref forwarded to the trigger row — the element carrying `role="menuitem"`
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenuSubMenu.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenuSubMenu.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,OAAO,KAAK,EAAE,EASZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,EAAuB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAyC5D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA6N5C,MAAM,MAAM,+BAA+B,GACzC,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;AAErC,UAAU,4BAA6B,SAAQ,IAAI,CACjD,SAAS,EACT,MAAM,GAAG,UAAU,CACpB;IACC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,8CAA8C;IAC9C,KAAK,EAAE,SAAS,CAAC;IACjB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,8CAA8C;IAC9C,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,+BAA+B,CAAC;IAC/C;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,wBAAyB,SAAQ,4BAA4B;IAC5E;;;;;;;;OAQG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AA6CD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,SAAS,CAg5BX;yBAl5Be,mBAAmB"}
1
+ {"version":3,"file":"DropdownMenuSubMenu.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenuSubMenu.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAEH,OAAO,KAAK,EAAE,EASZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,EAAuB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAyC5D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA6N5C,MAAM,MAAM,+BAA+B,GACzC,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;AAErC,UAAU,4BAA6B,SAAQ,IAAI,CACjD,SAAS,EACT,MAAM,GAAG,UAAU,CACpB;IACC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,8CAA8C;IAC9C,KAAK,EAAE,SAAS,CAAC;IACjB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,8CAA8C;IAC9C,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,+BAA+B,CAAC;IAC/C;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,wBAAyB,SAAQ,4BAA4B;IAC5E;;;;;;;;OAQG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AA6CD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,SAAS,CAg5BX;yBAl5Be,mBAAmB"}
@@ -40,9 +40,6 @@
40
40
  * the row. The list keeps this level's own roving focus, typeahead and press
41
41
  * model, so nothing beside the row needs to know.
42
42
  *
43
- * Prior art: legacy internal XDS `XDSDropdownSubMenuItem` (APG menubar-
44
- * navigation submenu). This re-expresses the same contract on Astryx primitives.
45
- *
46
43
  * SYNC: When modified, update these files to stay in sync:
47
44
  * - /packages/core/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs
48
45
  * - /packages/core/src/DropdownMenu/DropdownMenuSubMenu.test.tsx
@@ -7,6 +7,9 @@
7
7
  * highlight source. Mouse hover moves focus onto the pointed-at item so the
8
8
  * one focus highlight follows the pointer — instead of a separate `:hover`
9
9
  * background leaving the keyboard-focused item highlighted at the same time.
10
+ * That focus follows the last input (`architecture:interaction-modality` INV1):
11
+ * after a pointer press it does not match `:focus-visible`, so a keyboard-only
12
+ * focus style does not paint on the row under the mouse.
10
13
  *
11
14
  * SYNC: When modified, update the item components that use it:
12
15
  * - /packages/core/src/DropdownMenu/DropdownMenuItem.tsx
@@ -1 +1 @@
1
- {"version":3,"file":"menuItemHover.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/menuItemHover.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,OAAO,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,EAC5B,UAAU,CAAC,EAAE,OAAO,GACnB,IAAI,CAYN"}
1
+ {"version":3,"file":"menuItemHover.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/menuItemHover.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,OAAO,CAAC;AAGxC;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,EAC5B,UAAU,CAAC,EAAE,OAAO,GACnB,IAAI,CAoBN"}
@@ -11,6 +11,9 @@
11
11
  * highlight source. Mouse hover moves focus onto the pointed-at item so the
12
12
  * one focus highlight follows the pointer — instead of a separate `:hover`
13
13
  * background leaving the keyboard-focused item highlighted at the same time.
14
+ * That focus follows the last input (`architecture:interaction-modality` INV1):
15
+ * after a pointer press it does not match `:focus-visible`, so a keyboard-only
16
+ * focus style does not paint on the row under the mouse.
14
17
  *
15
18
  * SYNC: When modified, update the item components that use it:
16
19
  * - /packages/core/src/DropdownMenu/DropdownMenuItem.tsx
@@ -18,6 +21,8 @@
18
21
  * - /packages/core/src/DropdownMenu/DropdownMenuRadioItem.tsx
19
22
  * - /packages/core/src/DropdownMenu/DropdownMenuSubMenu.tsx
20
23
  */
24
+ import { focusForLastInput } from "../utils/focusReturn.js";
25
+
21
26
  /**
22
27
  * Move focus to a menu item as the pointer moves over it, so hover and
23
28
  * keyboard navigation share a single focus-driven highlight. Only reacts to a
@@ -33,7 +38,15 @@ export function focusMenuItemOnHover(e, isDisabled) {
33
38
  // stationary pointer, whose next pointerenter focuses it again — a
34
39
  // runaway auto-scroll loop. Keyboard navigation scrolls via its own
35
40
  // highlight handling; hover must never scroll.
36
- el.focus({
41
+ // A plain focus() inherits :focus-visible from the element focused before
42
+ // it (the menu after a pointer open), so after a pointer press it is moved
43
+ // with the browser's focusVisible option instead. After a key press the
44
+ // keyboard is the last input and the indicator stays. A browser without
45
+ // the option (Chrome and Edge before 145, Safari before 18.4) ignores it,
46
+ // and the row may then match :focus-visible as it did before.
47
+ // The menu activates the modality tracking this reads (its press model,
48
+ // or the Breadcrumbs menu trigger).
49
+ focusForLastInput(el, {
37
50
  preventScroll: true
38
51
  });
39
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PanelSearchInput.d.ts","sourceRoot":"","sources":["../../src/Field/PanelSearchInput.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EAAwB,KAAK,GAAG,EAAC,MAAM,OAAO,CAAC;AAkBtD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAgF5C,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CACjD,SAAS,CAAC,gBAAgB,CAAC,EAC3B,UAAU,CACX;IACC,iEAAiE;IACjE,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAE5B;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAC;IAEnB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IAEd,kEAAkE;IAClE,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEvC,wCAAwC;IACxC,SAAS,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IAEzD,0EAA0E;IAC1E,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IAEpD,yEAAyE;IACzE,MAAM,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IAEnD;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;CACjE;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,GAAG,EACH,KAAK,EACL,UAAU,EACV,WAAW,EACX,KAAK,EACL,aAAa,EACb,SAAS,EACT,OAAO,EACP,MAAM,EACN,kBAAkB,EAClB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,qBAAqB,+BA6EvB;yBA5Fe,gBAAgB"}
1
+ {"version":3,"file":"PanelSearchInput.d.ts","sourceRoot":"","sources":["../../src/Field/PanelSearchInput.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EAAwB,KAAK,GAAG,EAAC,MAAM,OAAO,CAAC;AAkBtD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAgF5C,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CACjD,SAAS,CAAC,gBAAgB,CAAC,EAC3B,UAAU,CACX;IACC,iEAAiE;IACjE,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAE5B;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAC;IAEnB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IAEd,kEAAkE;IAClE,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEvC,wCAAwC;IACxC,SAAS,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IAEzD,0EAA0E;IAC1E,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IAEpD,yEAAyE;IACzE,MAAM,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IAEnD;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;CACjE;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,GAAG,EACH,KAAK,EACL,UAAU,EACV,WAAW,EACX,KAAK,EACL,aAAa,EACb,SAAS,EACT,OAAO,EACP,MAAM,EACN,kBAAkB,EAClB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,qBAAqB,+BA4EvB;yBA3Fe,gBAAgB"}