@navikt/ds-react 6.13.0 → 6.15.0

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 (341) hide show
  1. package/cjs/accordion/AccordionContext.d.ts +0 -1
  2. package/cjs/collapsible/Collapsible.context.d.ts +0 -1
  3. package/cjs/date/context/useDateInputContext.d.ts +0 -1
  4. package/cjs/date/datepicker/parts/HeadRow.d.ts +0 -1
  5. package/cjs/date/datepicker/parts/HeadRow.js +2 -3
  6. package/cjs/date/datepicker/parts/HeadRow.js.map +1 -1
  7. package/cjs/date/datepicker/parts/Row.d.ts +0 -1
  8. package/cjs/date/datepicker/parts/TableHead.d.ts +0 -1
  9. package/cjs/date/datepicker/parts/WeekNumber.d.ts +0 -1
  10. package/cjs/date/datepicker/types.d.ts +0 -1
  11. package/cjs/date/monthpicker/types.d.ts +0 -1
  12. package/cjs/date/utils/check-dates.js +2 -2
  13. package/cjs/date/utils/check-dates.js.map +1 -1
  14. package/cjs/date/utils/get-initial-year.js +1 -2
  15. package/cjs/date/utils/get-initial-year.js.map +1 -1
  16. package/cjs/date/utils/get-month-weeks.js +2 -3
  17. package/cjs/date/utils/get-month-weeks.js.map +1 -1
  18. package/cjs/date/utils/is-match.js +2 -3
  19. package/cjs/date/utils/is-match.js.map +1 -1
  20. package/cjs/dropdown/Menu/index.d.ts +1 -1
  21. package/cjs/dropdown/context.d.ts +0 -1
  22. package/cjs/expansion-card/context.d.ts +0 -1
  23. package/cjs/form/checkbox/useCheckbox.d.ts +3 -3
  24. package/cjs/form/combobox/Combobox.d.ts +1 -1
  25. package/cjs/form/combobox/Combobox.js.map +1 -1
  26. package/cjs/form/combobox/ComboboxProvider.js +3 -1
  27. package/cjs/form/combobox/ComboboxProvider.js.map +1 -1
  28. package/cjs/form/combobox/FilteredOptions/AddNewOption.d.ts +3 -0
  29. package/cjs/form/combobox/FilteredOptions/AddNewOption.js +41 -0
  30. package/cjs/form/combobox/FilteredOptions/AddNewOption.js.map +1 -0
  31. package/cjs/form/combobox/FilteredOptions/FilteredOptions.js +13 -57
  32. package/cjs/form/combobox/FilteredOptions/FilteredOptions.js.map +1 -1
  33. package/cjs/form/combobox/FilteredOptions/FilteredOptionsItem.d.ts +6 -0
  34. package/cjs/form/combobox/FilteredOptions/FilteredOptionsItem.js +43 -0
  35. package/cjs/form/combobox/FilteredOptions/FilteredOptionsItem.js.map +1 -0
  36. package/cjs/form/combobox/FilteredOptions/LoadingMessage.d.ts +3 -0
  37. package/cjs/form/combobox/FilteredOptions/LoadingMessage.js +16 -0
  38. package/cjs/form/combobox/FilteredOptions/LoadingMessage.js.map +1 -0
  39. package/cjs/form/combobox/FilteredOptions/MaxSelectedMessage.d.ts +3 -0
  40. package/cjs/form/combobox/FilteredOptions/MaxSelectedMessage.js +20 -0
  41. package/cjs/form/combobox/FilteredOptions/MaxSelectedMessage.js.map +1 -0
  42. package/cjs/form/combobox/FilteredOptions/NoSearchHitsMessage.d.ts +3 -0
  43. package/cjs/form/combobox/FilteredOptions/NoSearchHitsMessage.js +14 -0
  44. package/cjs/form/combobox/FilteredOptions/NoSearchHitsMessage.js.map +1 -0
  45. package/cjs/form/combobox/FilteredOptions/filtered-options-util.d.ts +1 -0
  46. package/cjs/form/combobox/FilteredOptions/filtered-options-util.js +6 -1
  47. package/cjs/form/combobox/FilteredOptions/filtered-options-util.js.map +1 -1
  48. package/cjs/form/combobox/FilteredOptions/filteredOptionsContext.js +5 -5
  49. package/cjs/form/combobox/FilteredOptions/filteredOptionsContext.js.map +1 -1
  50. package/cjs/form/combobox/Input/Input.context.d.ts +20 -7
  51. package/cjs/form/combobox/Input/Input.context.js +6 -12
  52. package/cjs/form/combobox/Input/Input.context.js.map +1 -1
  53. package/cjs/form/combobox/Input/Input.d.ts +2 -1
  54. package/cjs/form/combobox/Input/Input.js +45 -20
  55. package/cjs/form/combobox/Input/Input.js.map +1 -1
  56. package/cjs/form/combobox/Input/InputController.d.ts +1 -1
  57. package/cjs/form/combobox/Input/InputController.js +1 -1
  58. package/cjs/form/combobox/Input/InputController.js.map +1 -1
  59. package/cjs/form/combobox/types.d.ts +8 -4
  60. package/cjs/form/fieldset/context.d.ts +0 -1
  61. package/cjs/form/fieldset/useFieldset.d.ts +1 -1
  62. package/cjs/form/file-upload/FileUpload.context.d.ts +0 -1
  63. package/cjs/form/file-upload/parts/dropzone/dropzone.types.d.ts +0 -1
  64. package/cjs/form/file-upload/parts/item/utils/format-file-size.js +1 -2
  65. package/cjs/form/file-upload/parts/item/utils/format-file-size.js.map +1 -1
  66. package/cjs/form/file-upload/useFileUpload.d.ts +1 -2
  67. package/cjs/form/file-upload/utils/is-accepted-file-type.js +1 -2
  68. package/cjs/form/file-upload/utils/is-accepted-file-type.js.map +1 -1
  69. package/cjs/form/file-upload/utils/is-accepted-size.js +1 -2
  70. package/cjs/form/file-upload/utils/is-accepted-size.js.map +1 -1
  71. package/cjs/form/radio/useRadio.d.ts +3 -3
  72. package/cjs/form/search/context.d.ts +0 -1
  73. package/cjs/layout/base/PrimitiveAsChildProps.d.ts +0 -1
  74. package/cjs/layout/grid/HGrid.js +4 -1
  75. package/cjs/layout/grid/HGrid.js.map +1 -1
  76. package/cjs/layout/stack/Stack.js +7 -2
  77. package/cjs/layout/stack/Stack.js.map +1 -1
  78. package/cjs/layout/utilities/css.js +2 -3
  79. package/cjs/layout/utilities/css.js.map +1 -1
  80. package/cjs/list/context.d.ts +0 -1
  81. package/cjs/list/types.d.ts +0 -1
  82. package/cjs/modal/ModalUtils.js +3 -3
  83. package/cjs/modal/ModalUtils.js.map +1 -1
  84. package/cjs/modal/types.d.ts +0 -1
  85. package/cjs/overlays/dismissablelayer/DismissableLayer.d.ts +1 -1
  86. package/cjs/overlays/dismissablelayer/util/dispatchCustomEvent.js +2 -2
  87. package/cjs/overlays/dismissablelayer/util/dispatchCustomEvent.js.map +1 -1
  88. package/cjs/overlays/dismissablelayer/util/useEscapeKeydown.js +1 -2
  89. package/cjs/overlays/dismissablelayer/util/useEscapeKeydown.js.map +1 -1
  90. package/cjs/overlays/dismissablelayer/util/useFocusOutside.js +1 -2
  91. package/cjs/overlays/dismissablelayer/util/useFocusOutside.js.map +1 -1
  92. package/cjs/overlays/dismissablelayer/util/usePointerDownOutside.js +1 -2
  93. package/cjs/overlays/dismissablelayer/util/usePointerDownOutside.js.map +1 -1
  94. package/cjs/overlays/floating/Floating.utils.js +2 -3
  95. package/cjs/overlays/floating/Floating.utils.js.map +1 -1
  96. package/cjs/overlays/floating-menu/Menu.d.ts +106 -0
  97. package/cjs/overlays/floating-menu/Menu.js +593 -0
  98. package/cjs/overlays/floating-menu/Menu.js.map +1 -0
  99. package/cjs/overlays/floating-menu/parts/FocusScope.d.ts +22 -0
  100. package/cjs/overlays/floating-menu/parts/FocusScope.js +89 -0
  101. package/cjs/overlays/floating-menu/parts/FocusScope.js.map +1 -0
  102. package/cjs/overlays/floating-menu/parts/RovingFocus.d.ts +9 -0
  103. package/cjs/overlays/floating-menu/parts/RovingFocus.js +112 -0
  104. package/cjs/overlays/floating-menu/parts/RovingFocus.js.map +1 -0
  105. package/cjs/overlays/floating-menu/parts/SlottedDivElement.d.ts +7 -0
  106. package/cjs/overlays/floating-menu/parts/SlottedDivElement.js +46 -0
  107. package/cjs/overlays/floating-menu/parts/SlottedDivElement.js.map +1 -0
  108. package/cjs/slot/merge-props.js +1 -2
  109. package/cjs/slot/merge-props.js.map +1 -1
  110. package/cjs/stepper/context.d.ts +0 -1
  111. package/cjs/table/context.d.ts +0 -1
  112. package/cjs/tabs/Tabs.context.d.ts +1 -2
  113. package/cjs/tabs/parts/tab/useTab.d.ts +1 -2
  114. package/cjs/tabs/parts/tab/useTab.js +1 -2
  115. package/cjs/tabs/parts/tab/useTab.js.map +1 -1
  116. package/cjs/tabs/parts/tablist/useScrollButtons.d.ts +0 -1
  117. package/cjs/tabs/parts/tablist/useScrollButtons.js +1 -2
  118. package/cjs/tabs/parts/tablist/useScrollButtons.js.map +1 -1
  119. package/cjs/tabs/parts/tablist/useTabList.js +3 -3
  120. package/cjs/tabs/parts/tablist/useTabList.js.map +1 -1
  121. package/cjs/tabs/parts/tabpanel/useTabPanel.js +1 -2
  122. package/cjs/tabs/parts/tabpanel/useTabPanel.js.map +1 -1
  123. package/cjs/tabs/useTabs.d.ts +0 -1
  124. package/cjs/tabs/useTabs.js +1 -2
  125. package/cjs/tabs/useTabs.js.map +1 -1
  126. package/cjs/timeline/hooks/usePeriodContext.d.ts +0 -1
  127. package/cjs/timeline/hooks/useRowContext.d.ts +0 -1
  128. package/cjs/timeline/hooks/useTimelineContext.d.ts +0 -1
  129. package/cjs/timeline/period/types.d.ts +0 -1
  130. package/cjs/timeline/zoom/index.d.ts +1 -1
  131. package/cjs/toggle-group/ToggleGroup.context.d.ts +1 -2
  132. package/cjs/toggle-group/parts/useToggleItem.d.ts +1 -2
  133. package/cjs/toggle-group/parts/useToggleItem.js +3 -3
  134. package/cjs/toggle-group/parts/useToggleItem.js.map +1 -1
  135. package/cjs/toggle-group/useToggleGroup.d.ts +0 -1
  136. package/cjs/toggle-group/useToggleGroup.js +1 -2
  137. package/cjs/toggle-group/useToggleGroup.js.map +1 -1
  138. package/cjs/util/composeEventHandlers.d.ts +1 -2
  139. package/cjs/util/composeEventHandlers.js +1 -2
  140. package/cjs/util/composeEventHandlers.js.map +1 -1
  141. package/cjs/util/copy.js +1 -1
  142. package/cjs/util/copy.js.map +1 -1
  143. package/cjs/util/create-context.js +1 -2
  144. package/cjs/util/create-context.js.map +1 -1
  145. package/cjs/util/debounce.js +1 -1
  146. package/cjs/util/debounce.js.map +1 -1
  147. package/cjs/util/hooks/descendants/useDescendant.d.ts +1 -1
  148. package/cjs/util/hooks/descendants/useDescendant.js +1 -2
  149. package/cjs/util/hooks/descendants/useDescendant.js.map +1 -1
  150. package/cjs/util/hooks/descendants/utils.js +4 -4
  151. package/cjs/util/hooks/descendants/utils.js.map +1 -1
  152. package/cjs/util/hooks/useCallbackRef.d.ts +0 -1
  153. package/cjs/util/hooks/useCallbackRef.js +1 -2
  154. package/cjs/util/hooks/useCallbackRef.js.map +1 -1
  155. package/cjs/util/hooks/useControllableState.js +1 -2
  156. package/cjs/util/hooks/useControllableState.js.map +1 -1
  157. package/cjs/util/hooks/useId.js +1 -2
  158. package/cjs/util/hooks/useId.js.map +1 -1
  159. package/cjs/util/hooks/useMergeRefs.d.ts +1 -1
  160. package/cjs/util/hooks/useMergeRefs.js +2 -3
  161. package/cjs/util/hooks/useMergeRefs.js.map +1 -1
  162. package/cjs/util/i18n/get.js +1 -2
  163. package/cjs/util/i18n/get.js.map +1 -1
  164. package/cjs/util/i18n/i18n.context.d.ts +0 -1
  165. package/cjs/util/i18n/i18n.context.js +2 -2
  166. package/cjs/util/i18n/i18n.context.js.map +1 -1
  167. package/cjs/util/i18n/merge.js +1 -2
  168. package/cjs/util/i18n/merge.js.map +1 -1
  169. package/cjs/util/omit.js +1 -2
  170. package/cjs/util/omit.js.map +1 -1
  171. package/cjs/util/types/AsChild.d.ts +0 -1
  172. package/cjs/util/types/AsChildProps.d.ts +0 -1
  173. package/cjs/util/virtualfocus/Context.d.ts +43 -0
  174. package/cjs/util/virtualfocus/Context.js +9 -0
  175. package/cjs/util/virtualfocus/Context.js.map +1 -0
  176. package/cjs/util/virtualfocus/SlottedDivElement.d.ts +7 -0
  177. package/cjs/util/virtualfocus/SlottedDivElement.js +46 -0
  178. package/cjs/util/virtualfocus/SlottedDivElement.js.map +1 -0
  179. package/cjs/util/virtualfocus/VirtualFocus.d.ts +62 -0
  180. package/cjs/util/virtualfocus/VirtualFocus.js +90 -0
  181. package/cjs/util/virtualfocus/VirtualFocus.js.map +1 -0
  182. package/cjs/util/virtualfocus/parts/VirtualFocusAnchor.d.ts +33 -0
  183. package/cjs/util/virtualfocus/parts/VirtualFocusAnchor.js +80 -0
  184. package/cjs/util/virtualfocus/parts/VirtualFocusAnchor.js.map +1 -0
  185. package/cjs/util/virtualfocus/parts/VirtualFocusContent.d.ts +4 -0
  186. package/cjs/util/virtualfocus/parts/VirtualFocusContent.js +45 -0
  187. package/cjs/util/virtualfocus/parts/VirtualFocusContent.js.map +1 -0
  188. package/cjs/util/virtualfocus/parts/VirtualFocusItem.d.ts +18 -0
  189. package/cjs/util/virtualfocus/parts/VirtualFocusItem.js +64 -0
  190. package/cjs/util/virtualfocus/parts/VirtualFocusItem.js.map +1 -0
  191. package/esm/accordion/AccordionContext.d.ts +0 -1
  192. package/esm/collapsible/Collapsible.context.d.ts +0 -1
  193. package/esm/date/context/useDateInputContext.d.ts +0 -1
  194. package/esm/date/datepicker/parts/HeadRow.d.ts +0 -1
  195. package/esm/date/datepicker/parts/Row.d.ts +0 -1
  196. package/esm/date/datepicker/parts/TableHead.d.ts +0 -1
  197. package/esm/date/datepicker/parts/WeekNumber.d.ts +0 -1
  198. package/esm/date/datepicker/types.d.ts +0 -1
  199. package/esm/date/monthpicker/types.d.ts +0 -1
  200. package/esm/dropdown/Menu/index.d.ts +1 -1
  201. package/esm/dropdown/context.d.ts +0 -1
  202. package/esm/expansion-card/context.d.ts +0 -1
  203. package/esm/form/checkbox/useCheckbox.d.ts +3 -3
  204. package/esm/form/combobox/Combobox.d.ts +1 -1
  205. package/esm/form/combobox/Combobox.js.map +1 -1
  206. package/esm/form/combobox/ComboboxProvider.js +3 -1
  207. package/esm/form/combobox/ComboboxProvider.js.map +1 -1
  208. package/esm/form/combobox/FilteredOptions/AddNewOption.d.ts +3 -0
  209. package/esm/form/combobox/FilteredOptions/AddNewOption.js +36 -0
  210. package/esm/form/combobox/FilteredOptions/AddNewOption.js.map +1 -0
  211. package/esm/form/combobox/FilteredOptions/FilteredOptions.js +13 -57
  212. package/esm/form/combobox/FilteredOptions/FilteredOptions.js.map +1 -1
  213. package/esm/form/combobox/FilteredOptions/FilteredOptionsItem.d.ts +6 -0
  214. package/esm/form/combobox/FilteredOptions/FilteredOptionsItem.js +38 -0
  215. package/esm/form/combobox/FilteredOptions/FilteredOptionsItem.js.map +1 -0
  216. package/esm/form/combobox/FilteredOptions/LoadingMessage.d.ts +3 -0
  217. package/esm/form/combobox/FilteredOptions/LoadingMessage.js +11 -0
  218. package/esm/form/combobox/FilteredOptions/LoadingMessage.js.map +1 -0
  219. package/esm/form/combobox/FilteredOptions/MaxSelectedMessage.d.ts +3 -0
  220. package/esm/form/combobox/FilteredOptions/MaxSelectedMessage.js +15 -0
  221. package/esm/form/combobox/FilteredOptions/MaxSelectedMessage.js.map +1 -0
  222. package/esm/form/combobox/FilteredOptions/NoSearchHitsMessage.d.ts +3 -0
  223. package/esm/form/combobox/FilteredOptions/NoSearchHitsMessage.js +9 -0
  224. package/esm/form/combobox/FilteredOptions/NoSearchHitsMessage.js.map +1 -0
  225. package/esm/form/combobox/FilteredOptions/filtered-options-util.d.ts +1 -0
  226. package/esm/form/combobox/FilteredOptions/filtered-options-util.js +6 -1
  227. package/esm/form/combobox/FilteredOptions/filtered-options-util.js.map +1 -1
  228. package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js +5 -5
  229. package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js.map +1 -1
  230. package/esm/form/combobox/Input/Input.context.d.ts +20 -7
  231. package/esm/form/combobox/Input/Input.context.js +7 -13
  232. package/esm/form/combobox/Input/Input.context.js.map +1 -1
  233. package/esm/form/combobox/Input/Input.d.ts +2 -1
  234. package/esm/form/combobox/Input/Input.js +46 -21
  235. package/esm/form/combobox/Input/Input.js.map +1 -1
  236. package/esm/form/combobox/Input/InputController.d.ts +1 -1
  237. package/esm/form/combobox/Input/InputController.js +1 -1
  238. package/esm/form/combobox/Input/InputController.js.map +1 -1
  239. package/esm/form/combobox/types.d.ts +8 -4
  240. package/esm/form/fieldset/context.d.ts +0 -1
  241. package/esm/form/fieldset/useFieldset.d.ts +1 -1
  242. package/esm/form/file-upload/FileUpload.context.d.ts +0 -1
  243. package/esm/form/file-upload/parts/dropzone/dropzone.types.d.ts +0 -1
  244. package/esm/form/file-upload/useFileUpload.d.ts +1 -2
  245. package/esm/form/radio/useRadio.d.ts +3 -3
  246. package/esm/form/search/context.d.ts +0 -1
  247. package/esm/layout/base/PrimitiveAsChildProps.d.ts +0 -1
  248. package/esm/layout/grid/HGrid.js +4 -1
  249. package/esm/layout/grid/HGrid.js.map +1 -1
  250. package/esm/layout/stack/Stack.js +7 -2
  251. package/esm/layout/stack/Stack.js.map +1 -1
  252. package/esm/list/context.d.ts +0 -1
  253. package/esm/list/types.d.ts +0 -1
  254. package/esm/modal/types.d.ts +0 -1
  255. package/esm/overlays/dismissablelayer/DismissableLayer.d.ts +1 -1
  256. package/esm/overlays/floating-menu/Menu.d.ts +106 -0
  257. package/esm/overlays/floating-menu/Menu.js +551 -0
  258. package/esm/overlays/floating-menu/Menu.js.map +1 -0
  259. package/esm/overlays/floating-menu/parts/FocusScope.d.ts +22 -0
  260. package/esm/overlays/floating-menu/parts/FocusScope.js +63 -0
  261. package/esm/overlays/floating-menu/parts/FocusScope.js.map +1 -0
  262. package/esm/overlays/floating-menu/parts/RovingFocus.d.ts +9 -0
  263. package/esm/overlays/floating-menu/parts/RovingFocus.js +86 -0
  264. package/esm/overlays/floating-menu/parts/RovingFocus.js.map +1 -0
  265. package/esm/overlays/floating-menu/parts/SlottedDivElement.d.ts +7 -0
  266. package/esm/overlays/floating-menu/parts/SlottedDivElement.js +20 -0
  267. package/esm/overlays/floating-menu/parts/SlottedDivElement.js.map +1 -0
  268. package/esm/stepper/context.d.ts +0 -1
  269. package/esm/table/context.d.ts +0 -1
  270. package/esm/tabs/Tabs.context.d.ts +1 -2
  271. package/esm/tabs/parts/tab/useTab.d.ts +1 -2
  272. package/esm/tabs/parts/tablist/useScrollButtons.d.ts +0 -1
  273. package/esm/tabs/parts/tablist/useTabList.js +2 -1
  274. package/esm/tabs/parts/tablist/useTabList.js.map +1 -1
  275. package/esm/tabs/useTabs.d.ts +0 -1
  276. package/esm/timeline/hooks/usePeriodContext.d.ts +0 -1
  277. package/esm/timeline/hooks/useRowContext.d.ts +0 -1
  278. package/esm/timeline/hooks/useTimelineContext.d.ts +0 -1
  279. package/esm/timeline/period/types.d.ts +0 -1
  280. package/esm/timeline/zoom/index.d.ts +1 -1
  281. package/esm/toggle-group/ToggleGroup.context.d.ts +1 -2
  282. package/esm/toggle-group/parts/useToggleItem.d.ts +1 -2
  283. package/esm/toggle-group/parts/useToggleItem.js +2 -1
  284. package/esm/toggle-group/parts/useToggleItem.js.map +1 -1
  285. package/esm/toggle-group/useToggleGroup.d.ts +0 -1
  286. package/esm/util/composeEventHandlers.d.ts +1 -2
  287. package/esm/util/hooks/descendants/useDescendant.d.ts +1 -1
  288. package/esm/util/hooks/useCallbackRef.d.ts +0 -1
  289. package/esm/util/hooks/useMergeRefs.d.ts +1 -1
  290. package/esm/util/i18n/i18n.context.d.ts +0 -1
  291. package/esm/util/types/AsChild.d.ts +0 -1
  292. package/esm/util/types/AsChildProps.d.ts +0 -1
  293. package/esm/util/virtualfocus/Context.d.ts +43 -0
  294. package/esm/util/virtualfocus/Context.js +5 -0
  295. package/esm/util/virtualfocus/Context.js.map +1 -0
  296. package/esm/util/virtualfocus/SlottedDivElement.d.ts +7 -0
  297. package/esm/util/virtualfocus/SlottedDivElement.js +20 -0
  298. package/esm/util/virtualfocus/SlottedDivElement.js.map +1 -0
  299. package/esm/util/virtualfocus/VirtualFocus.d.ts +62 -0
  300. package/esm/util/virtualfocus/VirtualFocus.js +63 -0
  301. package/esm/util/virtualfocus/VirtualFocus.js.map +1 -0
  302. package/esm/util/virtualfocus/parts/VirtualFocusAnchor.d.ts +33 -0
  303. package/esm/util/virtualfocus/parts/VirtualFocusAnchor.js +54 -0
  304. package/esm/util/virtualfocus/parts/VirtualFocusAnchor.js.map +1 -0
  305. package/esm/util/virtualfocus/parts/VirtualFocusContent.d.ts +4 -0
  306. package/esm/util/virtualfocus/parts/VirtualFocusContent.js +19 -0
  307. package/esm/util/virtualfocus/parts/VirtualFocusContent.js.map +1 -0
  308. package/esm/util/virtualfocus/parts/VirtualFocusItem.d.ts +18 -0
  309. package/esm/util/virtualfocus/parts/VirtualFocusItem.js +38 -0
  310. package/esm/util/virtualfocus/parts/VirtualFocusItem.js.map +1 -0
  311. package/package.json +3 -3
  312. package/src/form/combobox/Combobox.tsx +4 -1
  313. package/src/form/combobox/ComboboxProvider.tsx +3 -0
  314. package/src/form/combobox/FilteredOptions/AddNewOption.tsx +63 -0
  315. package/src/form/combobox/FilteredOptions/FilteredOptions.tsx +11 -121
  316. package/src/form/combobox/FilteredOptions/FilteredOptionsItem.tsx +73 -0
  317. package/src/form/combobox/FilteredOptions/LoadingMessage.tsx +20 -0
  318. package/src/form/combobox/FilteredOptions/MaxSelectedMessage.tsx +27 -0
  319. package/src/form/combobox/FilteredOptions/NoSearchHitsMessage.tsx +19 -0
  320. package/src/form/combobox/FilteredOptions/filtered-options-util.ts +9 -1
  321. package/src/form/combobox/FilteredOptions/filteredOptionsContext.tsx +8 -5
  322. package/src/form/combobox/Input/Input.context.tsx +27 -25
  323. package/src/form/combobox/Input/Input.tsx +60 -29
  324. package/src/form/combobox/Input/InputController.tsx +2 -0
  325. package/src/form/combobox/__tests__/combobox.test.tsx +174 -66
  326. package/src/form/combobox/types.ts +11 -7
  327. package/src/layout/grid/HGrid.tsx +4 -1
  328. package/src/layout/stack/Stack.tsx +6 -2
  329. package/src/overlays/floating-menu/Menu.tsx +1177 -0
  330. package/src/overlays/floating-menu/parts/FocusScope.tsx +84 -0
  331. package/src/overlays/floating-menu/parts/RovingFocus.tsx +121 -0
  332. package/src/overlays/floating-menu/parts/SlottedDivElement.tsx +17 -0
  333. package/src/tabs/parts/tablist/useTabList.ts +4 -1
  334. package/src/toggle-group/parts/useToggleItem.ts +4 -1
  335. package/src/util/composeEventHandlers.ts +1 -1
  336. package/src/util/virtualfocus/Context.tsx +27 -0
  337. package/src/util/virtualfocus/SlottedDivElement.tsx +17 -0
  338. package/src/util/virtualfocus/VirtualFocus.tsx +89 -0
  339. package/src/util/virtualfocus/parts/VirtualFocusAnchor.tsx +102 -0
  340. package/src/util/virtualfocus/parts/VirtualFocusContent.tsx +17 -0
  341. package/src/util/virtualfocus/parts/VirtualFocusItem.tsx +60 -0
@@ -0,0 +1,551 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import React, { forwardRef, useCallback, useEffect, useRef, useState, } from "react";
13
+ import ReactDOM from "react-dom";
14
+ import { Portal } from "../../portal/index.js";
15
+ import { composeEventHandlers } from "../../util/composeEventHandlers.js";
16
+ import { createContext } from "../../util/create-context.js";
17
+ import { useCallbackRef, useId, useMergeRefs } from "../../util/hooks/index.js";
18
+ import { createDescendantContext } from "../../util/hooks/descendants/useDescendant.js";
19
+ import { DismissableLayer } from "../dismissablelayer/DismissableLayer.js";
20
+ import { Floating } from "../floating/Floating.js";
21
+ import { FocusScope } from "./parts/FocusScope.js";
22
+ import { RovingFocus } from "./parts/RovingFocus.js";
23
+ import { SlottedDivElement, } from "./parts/SlottedDivElement.js";
24
+ /* -------------------------------------------------------------------------- */
25
+ /* Constants */
26
+ /* -------------------------------------------------------------------------- */
27
+ const SELECTION_KEYS = ["Enter", " "];
28
+ const SUB_OPEN_KEYS = [...SELECTION_KEYS, "ArrowRight"];
29
+ const SUB_CLOSE_KEYS = ["ArrowLeft"];
30
+ const FIRST_KEYS = ["ArrowDown", "PageUp", "Home"];
31
+ const LAST_KEYS = ["ArrowUp", "PageDown", "End"];
32
+ const FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];
33
+ const [MenuDescendantsProvider, useMenuDescendantsContext, useMenuDescendants, useMenuDescendant,] = createDescendantContext();
34
+ const [MenuProvider, useMenuContext] = createContext({
35
+ providerName: "MenuProvider",
36
+ hookName: "useMenuContext",
37
+ });
38
+ const [MenuRootProvider, useMenuRootContext] = createContext({
39
+ providerName: "MenuRootProvider",
40
+ hookName: "useMenuRootContext",
41
+ });
42
+ const MenuRoot = ({ open = false, children, onOpenChange, modal = true, }) => {
43
+ const [content, setContent] = useState(null);
44
+ const isUsingKeyboardRef = useRef(false);
45
+ const handleOpenChange = useCallbackRef(onOpenChange);
46
+ useEffect(() => {
47
+ const globalDocument = globalThis.document;
48
+ // Capturephase ensures we set the boolean before any side effects execute
49
+ // in response to the key or pointer event as they might depend on this value.
50
+ const handlePointer = () => {
51
+ isUsingKeyboardRef.current = false;
52
+ };
53
+ const handleKeyDown = () => {
54
+ isUsingKeyboardRef.current = true;
55
+ globalDocument.addEventListener("pointerdown", handlePointer, {
56
+ capture: true,
57
+ once: true,
58
+ });
59
+ globalDocument.addEventListener("pointermove", handlePointer, {
60
+ capture: true,
61
+ once: true,
62
+ });
63
+ };
64
+ globalDocument.addEventListener("keydown", handleKeyDown, {
65
+ capture: true,
66
+ });
67
+ return () => {
68
+ globalDocument.removeEventListener("keydown", handleKeyDown, {
69
+ capture: true,
70
+ });
71
+ globalDocument.removeEventListener("pointerdown", handlePointer, {
72
+ capture: true,
73
+ });
74
+ globalDocument.removeEventListener("pointermove", handlePointer, {
75
+ capture: true,
76
+ });
77
+ };
78
+ }, []);
79
+ return (React.createElement(Floating, null,
80
+ React.createElement(MenuProvider, { open: open, onOpenChange: handleOpenChange, content: content, onContentChange: setContent },
81
+ React.createElement(MenuRootProvider, { onClose: React.useCallback(() => handleOpenChange(false), [handleOpenChange]), isUsingKeyboardRef: isUsingKeyboardRef, modal: modal }, children))));
82
+ };
83
+ const Menu = MenuRoot;
84
+ const MenuAnchor = forwardRef((props, forwardedRef) => {
85
+ return React.createElement(Floating.Anchor, Object.assign({}, props, { ref: forwardedRef }));
86
+ });
87
+ const [MenuContentProvider, useMenuContentContext] = createContext({
88
+ providerName: "MenuContentProvider",
89
+ hookName: "useMenuContentContext",
90
+ });
91
+ const MenuContent = React.forwardRef((props, ref) => {
92
+ const descendants = useMenuDescendants();
93
+ const rootContext = useMenuRootContext();
94
+ return (React.createElement(MenuDescendantsProvider, { value: descendants }, rootContext.modal ? (React.createElement(MenuRootContentModal, Object.assign({}, props, { ref: ref }))) : (React.createElement(MenuRootContentNonModal, Object.assign({}, props, { ref: ref })))));
95
+ });
96
+ /* ---------------------------- Non-modal content --------------------------- */
97
+ const MenuRootContentNonModal = React.forwardRef((props, ref) => {
98
+ const context = useMenuContext();
99
+ return (React.createElement(MenuContentInternal, Object.assign({}, props, { ref: ref, disableOutsidePointerEvents: false, onDismiss: () => context.onOpenChange(false) })));
100
+ });
101
+ /* ------------------------------ Modal content ----------------------------- */
102
+ const MenuRootContentModal = forwardRef((props, ref) => {
103
+ const context = useMenuContext();
104
+ return (React.createElement(MenuContentInternal, Object.assign({}, props, { ref: ref,
105
+ // make sure to only disable pointer events when open
106
+ // this avoids blocking interactions while animating out
107
+ disableOutsidePointerEvents: context.open,
108
+ // When focus is trapped, a `focusout` event may still happen.
109
+ // We make sure we don't trigger our `onDismiss` in such case.
110
+ onFocusOutside: composeEventHandlers(props.onFocusOutside, (event) => event.preventDefault(), { checkForDefaultPrevented: false }), onDismiss: () => context.onOpenChange(false) })));
111
+ });
112
+ const MenuContentInternal = forwardRef((_a, forwardedRef) => {
113
+ var { onOpenAutoFocus, onCloseAutoFocus, disableOutsidePointerEvents, onEntryFocus, onEscapeKeyDown, onPointerDownOutside, onFocusOutside, onInteractOutside, onDismiss } = _a, rest = __rest(_a, ["onOpenAutoFocus", "onCloseAutoFocus", "disableOutsidePointerEvents", "onEntryFocus", "onEscapeKeyDown", "onPointerDownOutside", "onFocusOutside", "onInteractOutside", "onDismiss"]);
114
+ const descendants = useMenuDescendantsContext();
115
+ const context = useMenuContext();
116
+ const rootContext = useMenuRootContext();
117
+ const contentRef = useRef(null);
118
+ const composedRefs = useMergeRefs(forwardedRef, contentRef, context.onContentChange);
119
+ const pointerGraceTimerRef = React.useRef(0);
120
+ const pointerGraceIntentRef = React.useRef(null);
121
+ const pointerDirRef = React.useRef("right");
122
+ const lastPointerXRef = React.useRef(0);
123
+ const isPointerMovingToSubmenu = React.useCallback((event) => {
124
+ var _a, _b;
125
+ const isMovingTowards = pointerDirRef.current === ((_a = pointerGraceIntentRef.current) === null || _a === void 0 ? void 0 : _a.side);
126
+ return (isMovingTowards &&
127
+ isPointerInGraceArea(event, (_b = pointerGraceIntentRef.current) === null || _b === void 0 ? void 0 : _b.area));
128
+ }, []);
129
+ return (React.createElement(MenuContentProvider, { onItemEnter: React.useCallback((event) => {
130
+ if (isPointerMovingToSubmenu(event))
131
+ event.preventDefault();
132
+ }, [isPointerMovingToSubmenu]), onItemLeave: React.useCallback((event) => {
133
+ var _a;
134
+ if (isPointerMovingToSubmenu(event))
135
+ return;
136
+ /**
137
+ * Resets focus from current active item to content area
138
+ * This is to prevent focus from being stuck on an item when we move pointer outside the menu or onto a disabled item
139
+ */
140
+ (_a = contentRef.current) === null || _a === void 0 ? void 0 : _a.focus();
141
+ }, [isPointerMovingToSubmenu]), onPointerLeaveTrigger: React.useCallback((event) => {
142
+ if (isPointerMovingToSubmenu(event))
143
+ event.preventDefault();
144
+ }, [isPointerMovingToSubmenu]), pointerGraceTimerRef: pointerGraceTimerRef, onPointerGraceIntentChange: React.useCallback((intent) => {
145
+ pointerGraceIntentRef.current = intent;
146
+ }, []) },
147
+ React.createElement(FocusScope, { onMountHandler: composeEventHandlers(onOpenAutoFocus, (event) => {
148
+ var _a;
149
+ // when opening, explicitly focus the content area only and leave
150
+ // `onEntryFocus` in control of focusing first item
151
+ event.preventDefault();
152
+ (_a = contentRef.current) === null || _a === void 0 ? void 0 : _a.focus({ preventScroll: true });
153
+ }), onUnmountHandler: onCloseAutoFocus },
154
+ React.createElement(DismissableLayer, { asChild: true, disableOutsidePointerEvents: disableOutsidePointerEvents, onEscapeKeyDown: onEscapeKeyDown, onPointerDownOutside: onPointerDownOutside, onFocusOutside: onFocusOutside, onInteractOutside: onInteractOutside, onDismiss: onDismiss },
155
+ React.createElement(RovingFocus, { asChild: true, descendants: descendants, onEntryFocus: composeEventHandlers(onEntryFocus, (event) => {
156
+ // only focus first item when using keyboard
157
+ if (!rootContext.isUsingKeyboardRef.current)
158
+ event.preventDefault();
159
+ }) },
160
+ React.createElement(Floating.Content, Object.assign({ role: "menu", "aria-orientation": "vertical", "data-state": getOpenState(context.open), "data-aksel-menu-content": "", dir: "ltr" }, rest, { ref: composedRefs, style: Object.assign({ outline: "none" }, rest.style), onKeyDown: composeEventHandlers(rest.onKeyDown, (event) => {
161
+ var _a, _b, _c, _d;
162
+ // submenu key events bubble through portals. We only care about keys in this menu.
163
+ const target = event.target;
164
+ const isKeyDownInside = target.closest("[data-aksel-menu-content]") ===
165
+ event.currentTarget;
166
+ if (isKeyDownInside) {
167
+ // menus should not be navigated using tab key so we prevent it
168
+ if (event.key === "Tab")
169
+ event.preventDefault();
170
+ }
171
+ // focus first/last item based on key pressed
172
+ const content = contentRef.current;
173
+ if (event.target !== content)
174
+ return;
175
+ if (!FIRST_LAST_KEYS.includes(event.key))
176
+ return;
177
+ event.preventDefault();
178
+ if (LAST_KEYS.includes(event.key)) {
179
+ (_b = (_a = descendants.lastEnabled()) === null || _a === void 0 ? void 0 : _a.node) === null || _b === void 0 ? void 0 : _b.focus();
180
+ return;
181
+ }
182
+ (_d = (_c = descendants.firstEnabled()) === null || _c === void 0 ? void 0 : _c.node) === null || _d === void 0 ? void 0 : _d.focus();
183
+ }), onPointerMove: composeEventHandlers(rest.onPointerMove, whenMouse((event) => {
184
+ const target = event.target;
185
+ const pointerXHasChanged = lastPointerXRef.current !== event.clientX;
186
+ // We don't use `event.movementX` for this check because Safari will
187
+ // always return `0` on a pointer event.
188
+ if (event.currentTarget.contains(target) &&
189
+ pointerXHasChanged) {
190
+ const newDir = event.clientX > lastPointerXRef.current
191
+ ? "right"
192
+ : "left";
193
+ pointerDirRef.current = newDir;
194
+ lastPointerXRef.current = event.clientX;
195
+ }
196
+ })) })))))));
197
+ });
198
+ /* -------------------------------------------------------------------------- */
199
+ /* Menu item */
200
+ /* -------------------------------------------------------------------------- */
201
+ const ITEM_SELECT_EVENT = "menu.itemSelect";
202
+ const MenuItem = forwardRef((_a, forwardedRef) => {
203
+ var { disabled = false, onSelect, onClick, onPointerUp, onPointerDown, onKeyDown } = _a, rest = __rest(_a, ["disabled", "onSelect", "onClick", "onPointerUp", "onPointerDown", "onKeyDown"]);
204
+ const ref = useRef(null);
205
+ const rootContext = useMenuRootContext();
206
+ const composedRefs = useMergeRefs(forwardedRef, ref);
207
+ const isPointerDownRef = useRef(false);
208
+ const handleSelect = () => {
209
+ const menuItem = ref.current;
210
+ if (!disabled && menuItem && onSelect) {
211
+ const itemSelectEvent = new CustomEvent(ITEM_SELECT_EVENT, {
212
+ bubbles: true,
213
+ cancelable: true,
214
+ });
215
+ menuItem.addEventListener(ITEM_SELECT_EVENT, onSelect, { once: true });
216
+ /**
217
+ * We flush the event synchronously to ensure that the event is dispatched before other events react to side-effect from event.
218
+ * This is necessary to prevent the menu from potentially closing before we are able to prevent it.
219
+ */
220
+ ReactDOM.flushSync(() => menuItem.dispatchEvent(itemSelectEvent));
221
+ if (itemSelectEvent.defaultPrevented) {
222
+ isPointerDownRef.current = false;
223
+ }
224
+ else {
225
+ rootContext.onClose();
226
+ }
227
+ }
228
+ };
229
+ return (React.createElement(MenuItemInternal, Object.assign({}, rest, { tabIndex: disabled ? -1 : 0, ref: composedRefs, disabled: disabled, onClick: composeEventHandlers(onClick, handleSelect), onPointerDown: composeEventHandlers(onPointerDown, () => {
230
+ isPointerDownRef.current = true;
231
+ }, { checkForDefaultPrevented: false }), onPointerUp: composeEventHandlers(onPointerUp, (event) => {
232
+ var _a;
233
+ // Pointer down can move to a different menu item which should activate it on pointer up.
234
+ // We dispatch a click for selection to allow composition with click based triggers and to
235
+ // prevent Firefox from getting stuck in text selection mode when the menu closes.
236
+ if (!isPointerDownRef.current)
237
+ (_a = event.currentTarget) === null || _a === void 0 ? void 0 : _a.click();
238
+ }), onKeyDown: composeEventHandlers(onKeyDown, (event) => {
239
+ if (disabled) {
240
+ return;
241
+ }
242
+ if (SELECTION_KEYS.includes(event.key)) {
243
+ event.currentTarget.click();
244
+ /**
245
+ * We prevent default browser behaviour for selection keys as they should only trigger
246
+ * selection.
247
+ * - Prevents space from scrolling the page.
248
+ * - If keydown causes focus to move, prevents keydown from firing on the new target.
249
+ */
250
+ event.preventDefault();
251
+ }
252
+ }) })));
253
+ });
254
+ const MenuItemInternal = forwardRef((_a, forwardedRef) => {
255
+ var { disabled = false, onPointerMove, onPointerLeave } = _a, rest = __rest(_a, ["disabled", "onPointerMove", "onPointerLeave"]);
256
+ const { register } = useMenuDescendant({ disabled });
257
+ const contentContext = useMenuContentContext();
258
+ const ref = useRef(null);
259
+ const composedRefs = useMergeRefs(forwardedRef, ref, register);
260
+ return (React.createElement(SlottedDivElement, Object.assign({ role: "menuitem", "aria-disabled": disabled || undefined, "data-disabled": disabled ? "" : undefined, tabIndex: -1 }, rest, { style: Object.assign({ userSelect: "none" }, rest === null || rest === void 0 ? void 0 : rest.style), ref: composedRefs,
261
+ /**
262
+ * We focus items on `pointerMove` make sure that the item is focused or re-focused
263
+ * when the mouse wiggles. If we used `mouseOver`/`mouseEnter` it would not re-focus.
264
+ * This is mostly to handle edgecases where the user uses mouse and keyboard together.
265
+ */
266
+ onPointerMove: composeEventHandlers(onPointerMove, whenMouse((event) => {
267
+ if (disabled) {
268
+ /**
269
+ * In the edgecase the focus is still stuck on a previous item, we make sure to reset it
270
+ * even when the disabled item can't be focused itself to reset it.
271
+ */
272
+ contentContext.onItemLeave(event);
273
+ }
274
+ else {
275
+ contentContext.onItemEnter(event);
276
+ if (!event.defaultPrevented) {
277
+ event.currentTarget.focus();
278
+ }
279
+ }
280
+ })), onPointerLeave: composeEventHandlers(onPointerLeave, whenMouse(contentContext.onItemLeave)) })));
281
+ });
282
+ const MenuGroup = forwardRef((props, ref) => {
283
+ return React.createElement(SlottedDivElement, Object.assign({ role: "group" }, props, { ref: ref }));
284
+ });
285
+ const MenuPortal = forwardRef(({ children, rootElement }, ref) => {
286
+ const context = useMenuContext();
287
+ if (!context.open) {
288
+ return null;
289
+ }
290
+ return (React.createElement(Portal, { asChild: true, rootElement: rootElement, ref: ref }, children));
291
+ });
292
+ /* -------------------------------------------------------------------------- */
293
+ /* Menu Radio */
294
+ /* -------------------------------------------------------------------------- */
295
+ const [RadioGroupProvider, useMenuRadioGroupContext] = createContext({
296
+ providerName: "MenuRadioGroupProvider",
297
+ hookName: "useMenuRadioGroupContext",
298
+ defaultValue: {
299
+ value: undefined,
300
+ onValueChange: () => { },
301
+ },
302
+ });
303
+ const MenuRadioGroup = React.forwardRef((_a, ref) => {
304
+ var { value, onValueChange } = _a, rest = __rest(_a, ["value", "onValueChange"]);
305
+ const handleValueChange = useCallbackRef(onValueChange);
306
+ return (React.createElement(RadioGroupProvider, { value: value, onValueChange: handleValueChange },
307
+ React.createElement(MenuGroup, Object.assign({}, rest, { ref: ref }))));
308
+ });
309
+ /* -------------------------------------------------------------------------- */
310
+ /* Menu Item Indicator */
311
+ /* -------------------------------------------------------------------------- */
312
+ const [MenuItemIndicatorProvider, useMenuItemIndicatorContext] = createContext({
313
+ providerName: "MenuItemIndicatorProvider",
314
+ hookName: "useMenuItemIndicatorContext",
315
+ });
316
+ const MenuItemIndicator = forwardRef((_a, ref) => {
317
+ var { asChild } = _a, rest = __rest(_a, ["asChild"]);
318
+ const ctx = useMenuItemIndicatorContext();
319
+ return (React.createElement(SlottedDivElement, Object.assign({}, rest, { ref: ref, "data-state": getCheckedState(ctx.state), "aria-hidden": true, asChild: asChild })));
320
+ });
321
+ const MenuRadioItem = forwardRef((_a, forwardedRef) => {
322
+ var { value, onSelect } = _a, rest = __rest(_a, ["value", "onSelect"]);
323
+ const context = useMenuRadioGroupContext();
324
+ const checked = value === context.value;
325
+ return (React.createElement(MenuItemIndicatorProvider, { state: checked },
326
+ React.createElement(MenuItem, Object.assign({ role: "menuitemradio", "aria-checked": checked }, rest, { ref: forwardedRef, "data-state": getCheckedState(checked), onSelect: composeEventHandlers(onSelect, () => { var _a; return (_a = context.onValueChange) === null || _a === void 0 ? void 0 : _a.call(context, value); }, { checkForDefaultPrevented: false }) }))));
327
+ });
328
+ const MenuCheckboxItem = forwardRef((_a, forwardedRef) => {
329
+ var { checked = false, onCheckedChange, onSelect } = _a, rest = __rest(_a, ["checked", "onCheckedChange", "onSelect"]);
330
+ return (React.createElement(MenuItemIndicatorProvider, { state: checked },
331
+ React.createElement(MenuItem, Object.assign({ role: "menuitemcheckbox", "aria-checked": isIndeterminate(checked) ? "mixed" : checked }, rest, { ref: forwardedRef, "data-state": getCheckedState(checked), onSelect: composeEventHandlers(onSelect, () => onCheckedChange === null || onCheckedChange === void 0 ? void 0 : onCheckedChange(isIndeterminate(checked) ? true : !checked), { checkForDefaultPrevented: false }) }))));
332
+ });
333
+ const MenuSeparator = forwardRef((props, ref) => {
334
+ return (React.createElement(SlottedDivElement, Object.assign({ role: "separator", "aria-orientation": "horizontal" }, props, { ref: ref })));
335
+ });
336
+ const [MenuSubProvider, useMenuSubContext] = createContext({
337
+ providerName: "MenuSubProvider",
338
+ hookName: "useMenuSubContext",
339
+ });
340
+ const MenuSub = ({ children, onOpenChange, open = false, }) => {
341
+ const parentMenuContext = useMenuContext();
342
+ const [trigger, setTrigger] = useState(null);
343
+ const [content, setContent] = useState(null);
344
+ const handleOpenChange = useCallbackRef(onOpenChange);
345
+ // Prevent the parent menu from reopening with open submenus.
346
+ useEffect(() => {
347
+ if (parentMenuContext.open === false) {
348
+ handleOpenChange(false);
349
+ }
350
+ return () => handleOpenChange(false);
351
+ }, [parentMenuContext.open, handleOpenChange]);
352
+ return (React.createElement(Floating, null,
353
+ React.createElement(MenuProvider, { open: open, onOpenChange: handleOpenChange, content: content, onContentChange: setContent },
354
+ React.createElement(MenuSubProvider, { contentId: useId(), triggerId: useId(), trigger: trigger, onTriggerChange: setTrigger }, children))));
355
+ };
356
+ const MenuSubTrigger = forwardRef((props, forwardedRef) => {
357
+ const context = useMenuContext();
358
+ const subContext = useMenuSubContext();
359
+ const contentContext = useMenuContentContext();
360
+ const openTimerRef = useRef(null);
361
+ const { pointerGraceTimerRef, onPointerGraceIntentChange } = contentContext;
362
+ const composedRefs = useMergeRefs(forwardedRef, subContext.onTriggerChange);
363
+ const clearOpenTimer = useCallback(() => {
364
+ if (openTimerRef.current) {
365
+ window.clearTimeout(openTimerRef.current);
366
+ }
367
+ openTimerRef.current = null;
368
+ }, []);
369
+ React.useEffect(() => clearOpenTimer, [clearOpenTimer]);
370
+ React.useEffect(() => {
371
+ const pointerGraceTimer = pointerGraceTimerRef.current;
372
+ return () => {
373
+ window.clearTimeout(pointerGraceTimer);
374
+ onPointerGraceIntentChange(null);
375
+ };
376
+ }, [pointerGraceTimerRef, onPointerGraceIntentChange]);
377
+ return (React.createElement(MenuAnchor, { asChild: true },
378
+ React.createElement(MenuItemInternal, Object.assign({ id: subContext.triggerId, "aria-haspopup": "menu", "aria-expanded": context.open, "aria-controls": subContext.contentId, "data-state": getOpenState(context.open) }, props, { ref: composedRefs,
379
+ /**
380
+ * onClick is added to solve edgecase where the user clicks the trigger,
381
+ * but the focus is outside browser-window or viewport at first.
382
+ */
383
+ onClick: (event) => {
384
+ var _a;
385
+ (_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call(props, event);
386
+ if (props.disabled || event.defaultPrevented)
387
+ return;
388
+ event.currentTarget.focus();
389
+ if (!context.open)
390
+ context.onOpenChange(true);
391
+ }, onPointerMove: composeEventHandlers(props.onPointerMove, whenMouse((event) => {
392
+ if (event.defaultPrevented)
393
+ return;
394
+ if (!props.disabled && !context.open && !openTimerRef.current) {
395
+ contentContext.onPointerGraceIntentChange(null);
396
+ openTimerRef.current = window.setTimeout(() => {
397
+ context.onOpenChange(true);
398
+ clearOpenTimer();
399
+ }, 100);
400
+ }
401
+ })), onPointerLeave: composeEventHandlers(props.onPointerLeave, whenMouse((event) => {
402
+ var _a, _b;
403
+ clearOpenTimer();
404
+ const contentRect = (_a = context.content) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
405
+ if (contentRect) {
406
+ const side = (_b = context.content) === null || _b === void 0 ? void 0 : _b.dataset.side;
407
+ const rightSide = side === "right";
408
+ const bleed = rightSide ? -5 : +5;
409
+ const contentNearEdge = contentRect[rightSide ? "left" : "right"];
410
+ const contentFarEdge = contentRect[rightSide ? "right" : "left"];
411
+ contentContext.onPointerGraceIntentChange({
412
+ area: [
413
+ // Apply a bleed on clientX to ensure that our exit point is
414
+ // consistently within polygon bounds
415
+ { x: event.clientX + bleed, y: event.clientY },
416
+ { x: contentNearEdge, y: contentRect.top },
417
+ { x: contentFarEdge, y: contentRect.top },
418
+ { x: contentFarEdge, y: contentRect.bottom },
419
+ { x: contentNearEdge, y: contentRect.bottom },
420
+ ],
421
+ side,
422
+ });
423
+ window.clearTimeout(pointerGraceTimerRef.current);
424
+ pointerGraceTimerRef.current = window.setTimeout(() => contentContext.onPointerGraceIntentChange(null), 300);
425
+ }
426
+ else {
427
+ contentContext.onPointerLeaveTrigger(event);
428
+ if (event.defaultPrevented)
429
+ return;
430
+ // There's 100ms where the user may leave an item before the submenu was opened.
431
+ contentContext.onPointerGraceIntentChange(null);
432
+ }
433
+ })), onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {
434
+ var _a;
435
+ if (props.disabled) {
436
+ return;
437
+ }
438
+ if (SUB_OPEN_KEYS.includes(event.key)) {
439
+ context.onOpenChange(true);
440
+ // The trigger may hold focus if opened via pointer interaction
441
+ // so we ensure content is given focus again when switching to keyboard.
442
+ (_a = context.content) === null || _a === void 0 ? void 0 : _a.focus();
443
+ // prevent window from scrolling
444
+ event.preventDefault();
445
+ }
446
+ }) }))));
447
+ });
448
+ const MenuSubContent = forwardRef((props, forwardedRef) => {
449
+ const descendants = useMenuDescendants();
450
+ const context = useMenuContext();
451
+ const rootContext = useMenuRootContext();
452
+ const subContext = useMenuSubContext();
453
+ const ref = useRef(null);
454
+ const composedRefs = useMergeRefs(forwardedRef, ref);
455
+ return (React.createElement(MenuDescendantsProvider, { value: descendants },
456
+ React.createElement(MenuContentInternal, Object.assign({ id: subContext.contentId, "aria-labelledby": subContext.triggerId }, props, { ref: composedRefs, align: "start", side: "right", disableOutsidePointerEvents: false, onOpenAutoFocus: (event) => {
457
+ var _a;
458
+ // when opening a submenu, focus content for keyboard users only
459
+ if (rootContext.isUsingKeyboardRef.current) {
460
+ (_a = ref.current) === null || _a === void 0 ? void 0 : _a.focus();
461
+ }
462
+ event.preventDefault();
463
+ },
464
+ // The menu might close because of focusing another menu item in the parent menu. We
465
+ // don't want it to refocus the trigger in that case so we handle trigger focus ourselves.
466
+ onCloseAutoFocus: (event) => event.preventDefault(), onFocusOutside: composeEventHandlers(props.onFocusOutside, (event) => {
467
+ // We prevent closing when the trigger is focused to avoid triggering a re-open animation
468
+ // on pointer interaction.
469
+ if (event.target !== subContext.trigger)
470
+ context.onOpenChange(false);
471
+ }), onEscapeKeyDown: composeEventHandlers(props.onEscapeKeyDown, (event) => {
472
+ rootContext.onClose();
473
+ // Ensure pressing escape in submenu doesn't escape full screen mode
474
+ event.preventDefault();
475
+ }), onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {
476
+ var _a, _b;
477
+ // Submenu key events bubble through portals. We only care about keys in this menu.
478
+ const isKeyDownInside = event.currentTarget.contains(event.target);
479
+ let isCloseKey = SUB_CLOSE_KEYS.includes(event.key);
480
+ /* When submenu opens to the left, we allow closing it with ArrowRight */
481
+ if (((_a = context.content) === null || _a === void 0 ? void 0 : _a.dataset.side) === "left") {
482
+ isCloseKey = isCloseKey || event.key === "ArrowRight";
483
+ }
484
+ if (isKeyDownInside && isCloseKey) {
485
+ context.onOpenChange(false);
486
+ // We focus manually because we prevented it in `onCloseAutoFocus`
487
+ (_b = subContext.trigger) === null || _b === void 0 ? void 0 : _b.focus();
488
+ // Prevent window from scrolling
489
+ event.preventDefault();
490
+ }
491
+ }) }))));
492
+ });
493
+ /* -------------------------------------------------------------------------- */
494
+ /* Utilities */
495
+ /* -------------------------------------------------------------------------- */
496
+ function getOpenState(open) {
497
+ return open ? "open" : "closed";
498
+ }
499
+ function isIndeterminate(checked) {
500
+ return checked === "indeterminate";
501
+ }
502
+ function getCheckedState(checked) {
503
+ return isIndeterminate(checked)
504
+ ? "indeterminate"
505
+ : checked
506
+ ? "checked"
507
+ : "unchecked";
508
+ }
509
+ /**
510
+ * Determine if a point is inside of a polygon.
511
+ */
512
+ function isPointInPolygon(point, polygon) {
513
+ const { x, y } = point;
514
+ let inside = false;
515
+ for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
516
+ const xi = polygon[i].x;
517
+ const yi = polygon[i].y;
518
+ const xj = polygon[j].x;
519
+ const yj = polygon[j].y;
520
+ // prettier-ignore
521
+ const intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);
522
+ if (intersect)
523
+ inside = !inside;
524
+ }
525
+ return inside;
526
+ }
527
+ function isPointerInGraceArea(event, area) {
528
+ if (!area)
529
+ return false;
530
+ const cursorPos = { x: event.clientX, y: event.clientY };
531
+ return isPointInPolygon(cursorPos, area);
532
+ }
533
+ function whenMouse(handler) {
534
+ return (event) => event.pointerType === "mouse" ? handler(event) : undefined;
535
+ }
536
+ /* -------------------------------------------------------------------------- */
537
+ Menu.Anchor = MenuAnchor;
538
+ Menu.Portal = MenuPortal;
539
+ Menu.Content = MenuContent;
540
+ Menu.Group = MenuGroup;
541
+ Menu.Item = MenuItem;
542
+ Menu.CheckboxItem = MenuCheckboxItem;
543
+ Menu.RadioGroup = MenuRadioGroup;
544
+ Menu.RadioItem = MenuRadioItem;
545
+ Menu.Separator = MenuSeparator;
546
+ Menu.Sub = MenuSub;
547
+ Menu.SubTrigger = MenuSubTrigger;
548
+ Menu.SubContent = MenuSubContent;
549
+ Menu.ItemIndicator = MenuItemIndicator;
550
+ export { Menu, MenuAnchor, MenuCheckboxItem, MenuContent, MenuGroup, MenuItem, MenuItemIndicator, MenuPortal, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuSub, MenuSubContent, MenuSubTrigger, };
551
+ //# sourceMappingURL=Menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../../src/overlays/floating-menu/Menu.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import * as React from "react";
2
+ interface FocusScopeProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ /**
4
+ * Event handler called on mount, unless the component already has focus. Used for auto-focusing.
5
+ * Can be prevented.
6
+ */
7
+ onMountHandler?: (event: Event) => void;
8
+ /**
9
+ * Event handler called on unmount. Used for auto-focusing.
10
+ * Can be prevented.
11
+ */
12
+ onUnmountHandler?: (event: Event) => void;
13
+ }
14
+ /**
15
+ * FocusScope manages focus on mount and unmount of container.
16
+ * This is used to better handle autofocus of elements when mounted and unmounted.
17
+ * Example usage:
18
+ * - Focus first item in a list when mounted
19
+ * - Focus a button when unmounted
20
+ */
21
+ declare const FocusScope: React.ForwardRefExoticComponent<FocusScopeProps & React.RefAttributes<HTMLDivElement>>;
22
+ export { FocusScope, type FocusScopeProps };