@flipdish/ui-library 0.42.0 → 0.43.1

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 (260) hide show
  1. package/dist/components/atoms/LoadingIndicator/index.cjs +5 -0
  2. package/dist/components/atoms/LoadingIndicator/index.cjs.map +1 -1
  3. package/dist/components/atoms/LoadingIndicator/index.d.ts +1 -1
  4. package/dist/components/atoms/LoadingIndicator/index.d.ts.map +1 -1
  5. package/dist/components/atoms/LoadingIndicator/index.js +5 -0
  6. package/dist/components/atoms/LoadingIndicator/index.js.map +1 -1
  7. package/dist/components/atoms/SearchInput/index.cjs +28 -2
  8. package/dist/components/atoms/SearchInput/index.cjs.map +1 -1
  9. package/dist/components/atoms/SearchInput/index.d.ts +8 -1
  10. package/dist/components/atoms/SearchInput/index.d.ts.map +1 -1
  11. package/dist/components/atoms/SearchInput/index.js +28 -2
  12. package/dist/components/atoms/SearchInput/index.js.map +1 -1
  13. package/dist/components/atoms/SocialButton/index.cjs +11 -7
  14. package/dist/components/atoms/SocialButton/index.cjs.map +1 -1
  15. package/dist/components/atoms/SocialButton/index.d.ts.map +1 -1
  16. package/dist/components/atoms/SocialButton/index.js +11 -7
  17. package/dist/components/atoms/SocialButton/index.js.map +1 -1
  18. package/dist/components/atoms/Tooltip/index.cjs +8 -1
  19. package/dist/components/atoms/Tooltip/index.cjs.map +1 -1
  20. package/dist/components/atoms/Tooltip/index.d.ts.map +1 -1
  21. package/dist/components/atoms/Tooltip/index.js +8 -1
  22. package/dist/components/atoms/Tooltip/index.js.map +1 -1
  23. package/dist/components/atoms/UtilityButton/index.cjs.map +1 -1
  24. package/dist/components/atoms/UtilityButton/index.d.ts +2 -0
  25. package/dist/components/atoms/UtilityButton/index.d.ts.map +1 -1
  26. package/dist/components/atoms/UtilityButton/index.js.map +1 -1
  27. package/dist/components/molecules/Breadcrumbs/components/BreadcrumbItem.cjs +16 -4
  28. package/dist/components/molecules/Breadcrumbs/components/BreadcrumbItem.cjs.map +1 -1
  29. package/dist/components/molecules/Breadcrumbs/components/BreadcrumbItem.d.ts.map +1 -1
  30. package/dist/components/molecules/Breadcrumbs/components/BreadcrumbItem.js +17 -5
  31. package/dist/components/molecules/Breadcrumbs/components/BreadcrumbItem.js.map +1 -1
  32. package/dist/components/molecules/ButtonGroup/index.cjs +8 -1
  33. package/dist/components/molecules/ButtonGroup/index.cjs.map +1 -1
  34. package/dist/components/molecules/ButtonGroup/index.d.ts.map +1 -1
  35. package/dist/components/molecules/ButtonGroup/index.js +9 -2
  36. package/dist/components/molecules/ButtonGroup/index.js.map +1 -1
  37. package/dist/components/molecules/CodeSnippet/index.cjs +8 -1
  38. package/dist/components/molecules/CodeSnippet/index.cjs.map +1 -1
  39. package/dist/components/molecules/CodeSnippet/index.d.ts.map +1 -1
  40. package/dist/components/molecules/CodeSnippet/index.js +8 -1
  41. package/dist/components/molecules/CodeSnippet/index.js.map +1 -1
  42. package/dist/components/molecules/Dropdown/index.cjs +10 -7
  43. package/dist/components/molecules/Dropdown/index.cjs.map +1 -1
  44. package/dist/components/molecules/Dropdown/index.d.ts.map +1 -1
  45. package/dist/components/molecules/Dropdown/index.js +11 -8
  46. package/dist/components/molecules/Dropdown/index.js.map +1 -1
  47. package/dist/components/molecules/EmptyState/index.cjs +3 -2
  48. package/dist/components/molecules/EmptyState/index.cjs.map +1 -1
  49. package/dist/components/molecules/EmptyState/index.d.ts.map +1 -1
  50. package/dist/components/molecules/EmptyState/index.js +3 -2
  51. package/dist/components/molecules/EmptyState/index.js.map +1 -1
  52. package/dist/components/molecules/Select/components/Combobox.cjs +8 -1
  53. package/dist/components/molecules/Select/components/Combobox.cjs.map +1 -1
  54. package/dist/components/molecules/Select/components/Combobox.js +8 -1
  55. package/dist/components/molecules/Select/components/Combobox.js.map +1 -1
  56. package/dist/components/molecules/Select/components/SelectItem.cjs +10 -1
  57. package/dist/components/molecules/Select/components/SelectItem.cjs.map +1 -1
  58. package/dist/components/molecules/Select/components/SelectItem.d.ts.map +1 -1
  59. package/dist/components/molecules/Select/components/SelectItem.js +10 -1
  60. package/dist/components/molecules/Select/components/SelectItem.js.map +1 -1
  61. package/dist/components/molecules/Select/index.cjs +11 -1
  62. package/dist/components/molecules/Select/index.cjs.map +1 -1
  63. package/dist/components/molecules/Select/index.d.ts.map +1 -1
  64. package/dist/components/molecules/Select/index.js +11 -1
  65. package/dist/components/molecules/Select/index.js.map +1 -1
  66. package/dist/components/molecules/Select/multiSelect.utils.cjs +5 -1
  67. package/dist/components/molecules/Select/multiSelect.utils.cjs.map +1 -1
  68. package/dist/components/molecules/Select/multiSelect.utils.d.ts.map +1 -1
  69. package/dist/components/molecules/Select/multiSelect.utils.js +5 -1
  70. package/dist/components/molecules/Select/multiSelect.utils.js.map +1 -1
  71. package/dist/components/molecules/Tabs/index.cjs +14 -9
  72. package/dist/components/molecules/Tabs/index.cjs.map +1 -1
  73. package/dist/components/molecules/Tabs/index.d.ts +5 -3
  74. package/dist/components/molecules/Tabs/index.d.ts.map +1 -1
  75. package/dist/components/molecules/Tabs/index.js +15 -10
  76. package/dist/components/molecules/Tabs/index.js.map +1 -1
  77. package/dist/components/molecules/Tags/index.cjs +8 -1
  78. package/dist/components/molecules/Tags/index.cjs.map +1 -1
  79. package/dist/components/molecules/Tags/index.d.ts.map +1 -1
  80. package/dist/components/molecules/Tags/index.js +8 -1
  81. package/dist/components/molecules/Tags/index.js.map +1 -1
  82. package/dist/components/molecules/VerificationCodeInput/index.cjs +1 -1
  83. package/dist/components/molecules/VerificationCodeInput/index.cjs.map +1 -1
  84. package/dist/components/molecules/VerificationCodeInput/index.js +1 -1
  85. package/dist/components/molecules/VerificationCodeInput/index.js.map +1 -1
  86. package/dist/components/organisms/ApplicationHeader/index.cjs +4 -1
  87. package/dist/components/organisms/ApplicationHeader/index.cjs.map +1 -1
  88. package/dist/components/organisms/ApplicationHeader/index.d.ts.map +1 -1
  89. package/dist/components/organisms/ApplicationHeader/index.js +4 -1
  90. package/dist/components/organisms/ApplicationHeader/index.js.map +1 -1
  91. package/dist/components/organisms/Calendar/calendar.utils.cjs +14 -0
  92. package/dist/components/organisms/Calendar/calendar.utils.cjs.map +1 -1
  93. package/dist/components/organisms/Calendar/calendar.utils.d.ts +7 -0
  94. package/dist/components/organisms/Calendar/calendar.utils.d.ts.map +1 -1
  95. package/dist/components/organisms/Calendar/calendar.utils.js +14 -1
  96. package/dist/components/organisms/Calendar/calendar.utils.js.map +1 -1
  97. package/dist/components/organisms/Calendar/components/CalendarDayView.cjs +1 -1
  98. package/dist/components/organisms/Calendar/components/CalendarDayView.cjs.map +1 -1
  99. package/dist/components/organisms/Calendar/components/CalendarDayView.d.ts.map +1 -1
  100. package/dist/components/organisms/Calendar/components/CalendarDayView.js +2 -2
  101. package/dist/components/organisms/Calendar/components/CalendarDayView.js.map +1 -1
  102. package/dist/components/organisms/Calendar/components/CalendarMonthView.cjs +12 -5
  103. package/dist/components/organisms/Calendar/components/CalendarMonthView.cjs.map +1 -1
  104. package/dist/components/organisms/Calendar/components/CalendarMonthView.d.ts.map +1 -1
  105. package/dist/components/organisms/Calendar/components/CalendarMonthView.js +13 -6
  106. package/dist/components/organisms/Calendar/components/CalendarMonthView.js.map +1 -1
  107. package/dist/components/organisms/Calendar/components/CalendarWeekView.cjs +1 -1
  108. package/dist/components/organisms/Calendar/components/CalendarWeekView.cjs.map +1 -1
  109. package/dist/components/organisms/Calendar/components/CalendarWeekView.d.ts.map +1 -1
  110. package/dist/components/organisms/Calendar/components/CalendarWeekView.js +2 -2
  111. package/dist/components/organisms/Calendar/components/CalendarWeekView.js.map +1 -1
  112. package/dist/components/organisms/Charts/components/ChartsBase.cjs +28 -13
  113. package/dist/components/organisms/Charts/components/ChartsBase.cjs.map +1 -1
  114. package/dist/components/organisms/Charts/components/ChartsBase.d.ts.map +1 -1
  115. package/dist/components/organisms/Charts/components/ChartsBase.js +28 -13
  116. package/dist/components/organisms/Charts/components/ChartsBase.js.map +1 -1
  117. package/dist/components/organisms/Charts/components/Metrics.cjs +1 -1
  118. package/dist/components/organisms/Charts/components/Metrics.cjs.map +1 -1
  119. package/dist/components/organisms/Charts/components/Metrics.d.ts.map +1 -1
  120. package/dist/components/organisms/Charts/components/Metrics.js +1 -1
  121. package/dist/components/organisms/Charts/components/Metrics.js.map +1 -1
  122. package/dist/components/organisms/ColorPicker/index.cjs +8 -5
  123. package/dist/components/organisms/ColorPicker/index.cjs.map +1 -1
  124. package/dist/components/organisms/ColorPicker/index.d.ts.map +1 -1
  125. package/dist/components/organisms/ColorPicker/index.js +8 -5
  126. package/dist/components/organisms/ColorPicker/index.js.map +1 -1
  127. package/dist/components/organisms/Messaging/index.cjs +23 -5
  128. package/dist/components/organisms/Messaging/index.cjs.map +1 -1
  129. package/dist/components/organisms/Messaging/index.d.ts.map +1 -1
  130. package/dist/components/organisms/Messaging/index.js +24 -6
  131. package/dist/components/organisms/Messaging/index.js.map +1 -1
  132. package/dist/components/organisms/SidePanel/hooks/usePanelFocus.cjs +7 -2
  133. package/dist/components/organisms/SidePanel/hooks/usePanelFocus.cjs.map +1 -1
  134. package/dist/components/organisms/SidePanel/hooks/usePanelFocus.d.ts +3 -1
  135. package/dist/components/organisms/SidePanel/hooks/usePanelFocus.d.ts.map +1 -1
  136. package/dist/components/organisms/SidePanel/hooks/usePanelFocus.js +8 -3
  137. package/dist/components/organisms/SidePanel/hooks/usePanelFocus.js.map +1 -1
  138. package/dist/components/organisms/SidebarNavigation/hooks/useDualTierKeyboard.cjs +5 -3
  139. package/dist/components/organisms/SidebarNavigation/hooks/useDualTierKeyboard.cjs.map +1 -1
  140. package/dist/components/organisms/SidebarNavigation/hooks/useDualTierKeyboard.d.ts +7 -3
  141. package/dist/components/organisms/SidebarNavigation/hooks/useDualTierKeyboard.d.ts.map +1 -1
  142. package/dist/components/organisms/SidebarNavigation/hooks/useDualTierKeyboard.js +5 -3
  143. package/dist/components/organisms/SidebarNavigation/hooks/useDualTierKeyboard.js.map +1 -1
  144. package/dist/components/organisms/SidebarNavigation/hooks/useDualTierReveal.cjs +5 -3
  145. package/dist/components/organisms/SidebarNavigation/hooks/useDualTierReveal.cjs.map +1 -1
  146. package/dist/components/organisms/SidebarNavigation/hooks/useDualTierReveal.d.ts +5 -3
  147. package/dist/components/organisms/SidebarNavigation/hooks/useDualTierReveal.d.ts.map +1 -1
  148. package/dist/components/organisms/SidebarNavigation/hooks/useDualTierReveal.js +5 -3
  149. package/dist/components/organisms/SidebarNavigation/hooks/useDualTierReveal.js.map +1 -1
  150. package/dist/components/organisms/SidebarNavigation/index.cjs +11 -3
  151. package/dist/components/organisms/SidebarNavigation/index.cjs.map +1 -1
  152. package/dist/components/organisms/SidebarNavigation/index.d.ts.map +1 -1
  153. package/dist/components/organisms/SidebarNavigation/index.js +12 -4
  154. package/dist/components/organisms/SidebarNavigation/index.js.map +1 -1
  155. package/dist/components/organisms/SlideoutMenu/components/SlideoutShell.cjs +121 -0
  156. package/dist/components/organisms/SlideoutMenu/components/SlideoutShell.cjs.map +1 -0
  157. package/dist/components/organisms/SlideoutMenu/components/SlideoutShell.d.ts +30 -0
  158. package/dist/components/organisms/SlideoutMenu/components/SlideoutShell.d.ts.map +1 -0
  159. package/dist/components/organisms/SlideoutMenu/components/SlideoutShell.js +119 -0
  160. package/dist/components/organisms/SlideoutMenu/components/SlideoutShell.js.map +1 -0
  161. package/dist/components/organisms/SlideoutMenu/hooks/useSlideoutState.cjs +39 -0
  162. package/dist/components/organisms/SlideoutMenu/hooks/useSlideoutState.cjs.map +1 -0
  163. package/dist/components/organisms/SlideoutMenu/hooks/useSlideoutState.d.ts +23 -0
  164. package/dist/components/organisms/SlideoutMenu/hooks/useSlideoutState.d.ts.map +1 -0
  165. package/dist/components/organisms/SlideoutMenu/hooks/useSlideoutState.js +37 -0
  166. package/dist/components/organisms/SlideoutMenu/hooks/useSlideoutState.js.map +1 -0
  167. package/dist/components/organisms/SlideoutMenu/index.cjs +34 -37
  168. package/dist/components/organisms/SlideoutMenu/index.cjs.map +1 -1
  169. package/dist/components/organisms/SlideoutMenu/index.d.ts +52 -41
  170. package/dist/components/organisms/SlideoutMenu/index.d.ts.map +1 -1
  171. package/dist/components/organisms/SlideoutMenu/index.js +35 -38
  172. package/dist/components/organisms/SlideoutMenu/index.js.map +1 -1
  173. package/dist/components/organisms/SlideoutMenu/providers/OverlayBounds.context.cjs +13 -0
  174. package/dist/components/organisms/SlideoutMenu/providers/OverlayBounds.context.cjs.map +1 -0
  175. package/dist/components/organisms/SlideoutMenu/providers/OverlayBounds.context.d.ts +14 -0
  176. package/dist/components/organisms/SlideoutMenu/providers/OverlayBounds.context.d.ts.map +1 -0
  177. package/dist/components/organisms/SlideoutMenu/providers/OverlayBounds.context.js +11 -0
  178. package/dist/components/organisms/SlideoutMenu/providers/OverlayBounds.context.js.map +1 -0
  179. package/dist/components/organisms/SlideoutMenu/providers/SlideoutMenu.context.cjs +9 -0
  180. package/dist/components/organisms/SlideoutMenu/providers/SlideoutMenu.context.cjs.map +1 -0
  181. package/dist/components/organisms/SlideoutMenu/providers/SlideoutMenu.context.d.ts +13 -0
  182. package/dist/components/organisms/SlideoutMenu/providers/SlideoutMenu.context.d.ts.map +1 -0
  183. package/dist/components/organisms/SlideoutMenu/providers/SlideoutMenu.context.js +7 -0
  184. package/dist/components/organisms/SlideoutMenu/providers/SlideoutMenu.context.js.map +1 -0
  185. package/dist/components/organisms/SlideoutMenu/utilities/slideoutMenu.utils.cjs +52 -0
  186. package/dist/components/organisms/SlideoutMenu/utilities/slideoutMenu.utils.cjs.map +1 -0
  187. package/dist/components/organisms/SlideoutMenu/utilities/slideoutMenu.utils.d.ts +26 -0
  188. package/dist/components/organisms/SlideoutMenu/utilities/slideoutMenu.utils.d.ts.map +1 -0
  189. package/dist/components/organisms/SlideoutMenu/utilities/slideoutMenu.utils.js +47 -0
  190. package/dist/components/organisms/SlideoutMenu/utilities/slideoutMenu.utils.js.map +1 -0
  191. package/dist/components/organisms/Table/index.cjs +35 -5
  192. package/dist/components/organisms/Table/index.cjs.map +1 -1
  193. package/dist/components/organisms/Table/index.d.ts +8 -2
  194. package/dist/components/organisms/Table/index.d.ts.map +1 -1
  195. package/dist/components/organisms/Table/index.js +36 -6
  196. package/dist/components/organisms/Table/index.js.map +1 -1
  197. package/dist/components/organisms/Table/table.utils.cjs +37 -0
  198. package/dist/components/organisms/Table/table.utils.cjs.map +1 -0
  199. package/dist/components/organisms/Table/table.utils.d.ts +22 -0
  200. package/dist/components/organisms/Table/table.utils.d.ts.map +1 -0
  201. package/dist/components/organisms/Table/table.utils.js +33 -0
  202. package/dist/components/organisms/Table/table.utils.js.map +1 -0
  203. package/dist/components/organisms/TreeView/index.cjs +14 -7
  204. package/dist/components/organisms/TreeView/index.cjs.map +1 -1
  205. package/dist/components/organisms/TreeView/index.d.ts.map +1 -1
  206. package/dist/components/organisms/TreeView/index.js +14 -7
  207. package/dist/components/organisms/TreeView/index.js.map +1 -1
  208. package/dist/components/organisms/TreeView/treeView.utils.cjs +4 -1
  209. package/dist/components/organisms/TreeView/treeView.utils.cjs.map +1 -1
  210. package/dist/components/organisms/TreeView/treeView.utils.d.ts.map +1 -1
  211. package/dist/components/organisms/TreeView/treeView.utils.js +4 -1
  212. package/dist/components/organisms/TreeView/treeView.utils.js.map +1 -1
  213. package/dist/components/templates/AppShell/hooks/usePageAreaBounds.cjs +43 -0
  214. package/dist/components/templates/AppShell/hooks/usePageAreaBounds.cjs.map +1 -0
  215. package/dist/components/templates/AppShell/hooks/usePageAreaBounds.d.ts +12 -0
  216. package/dist/components/templates/AppShell/hooks/usePageAreaBounds.d.ts.map +1 -0
  217. package/dist/components/templates/AppShell/hooks/usePageAreaBounds.js +41 -0
  218. package/dist/components/templates/AppShell/hooks/usePageAreaBounds.js.map +1 -0
  219. package/dist/components/templates/AppShell/index.cjs +10 -6
  220. package/dist/components/templates/AppShell/index.cjs.map +1 -1
  221. package/dist/components/templates/AppShell/index.d.ts +1 -1
  222. package/dist/components/templates/AppShell/index.d.ts.map +1 -1
  223. package/dist/components/templates/AppShell/index.js +11 -7
  224. package/dist/components/templates/AppShell/index.js.map +1 -1
  225. package/dist/hooks/__internal__/useDebouncedSearch/useDebouncedSearch.cjs +56 -0
  226. package/dist/hooks/__internal__/useDebouncedSearch/useDebouncedSearch.cjs.map +1 -0
  227. package/dist/hooks/__internal__/useDebouncedSearch/useDebouncedSearch.d.ts +26 -0
  228. package/dist/hooks/__internal__/useDebouncedSearch/useDebouncedSearch.d.ts.map +1 -0
  229. package/dist/hooks/__internal__/useDebouncedSearch/useDebouncedSearch.js +54 -0
  230. package/dist/hooks/__internal__/useDebouncedSearch/useDebouncedSearch.js.map +1 -0
  231. package/dist/hooks/useDebouncedCallback/index.cjs +45 -0
  232. package/dist/hooks/useDebouncedCallback/index.cjs.map +1 -0
  233. package/dist/hooks/useDebouncedCallback/index.d.ts +18 -0
  234. package/dist/hooks/useDebouncedCallback/index.d.ts.map +1 -0
  235. package/dist/hooks/useDebouncedCallback/index.js +43 -0
  236. package/dist/hooks/useDebouncedCallback/index.js.map +1 -0
  237. package/dist/native/components/atoms/Checkbox/index.d.ts.map +1 -1
  238. package/dist/native/components/atoms/Checkbox/index.js +1 -1
  239. package/dist/native/components/atoms/Checkbox/index.js.map +1 -1
  240. package/dist/native/components/molecules/Tags/index.d.ts.map +1 -1
  241. package/dist/native/components/molecules/Tags/index.js +8 -1
  242. package/dist/native/components/molecules/Tags/index.js.map +1 -1
  243. package/dist/native/hooks/useDebouncedCallback/index.d.ts +18 -0
  244. package/dist/native/hooks/useDebouncedCallback/index.d.ts.map +1 -0
  245. package/dist/native/hooks/useDebouncedCallback/index.js +43 -0
  246. package/dist/native/hooks/useDebouncedCallback/index.js.map +1 -0
  247. package/dist/native/utilities/searchParamsUtils/index.d.ts +12 -0
  248. package/dist/providers/UIProvider/hooks/usePortalAnchor.cjs +10 -9
  249. package/dist/providers/UIProvider/hooks/usePortalAnchor.cjs.map +1 -1
  250. package/dist/providers/UIProvider/hooks/usePortalAnchor.d.ts +5 -4
  251. package/dist/providers/UIProvider/hooks/usePortalAnchor.d.ts.map +1 -1
  252. package/dist/providers/UIProvider/hooks/usePortalAnchor.js +10 -9
  253. package/dist/providers/UIProvider/hooks/usePortalAnchor.js.map +1 -1
  254. package/dist/utilities/searchParamsUtils/index.cjs +71 -0
  255. package/dist/utilities/searchParamsUtils/index.cjs.map +1 -0
  256. package/dist/utilities/searchParamsUtils/index.d.ts +61 -0
  257. package/dist/utilities/searchParamsUtils/index.d.ts.map +1 -0
  258. package/dist/utilities/searchParamsUtils/index.js +64 -0
  259. package/dist/utilities/searchParamsUtils/index.js.map +1 -0
  260. package/package.json +3 -1
@@ -7,7 +7,8 @@ import { cx } from '@flipdish/ui-library/utilities/cx';
7
7
  import { safeHref } from '@flipdish/ui-library/utilities/hrefUtils';
8
8
  import { useResolvedTestId, joinTestId, slugifyTestId, TestIdProvider } from '@flipdish/ui-library/utilities/testIdUtils';
9
9
  import { motion, AnimatePresence } from 'motion/react';
10
- import { useState, useEffect, useId } from 'react';
10
+ import { useState, useEffect, useRef, useId } from 'react';
11
+ import { Overlay } from 'react-aria';
11
12
  import { findActiveHref, findActiveItem } from '../../__internal__/navigation/nav.utils.js';
12
13
  import { SearchTrigger } from '../ApplicationHeader/components/SearchTrigger.js';
13
14
  import { LogoLink } from './components/LogoLink.js';
@@ -66,11 +67,14 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, onNavi
66
67
  const sections = [...items, ...footerItems];
67
68
  // One resolved href (the most specific match) so nested hrefs never yield two current pages.
68
69
  const activeHref = findActiveHref(sections, activeUrl);
69
- const { currentLabel, setCurrentLabel, currentItem, isSecondarySidebarVisible, setIsHovering, setIsAccountMenuOpen, handleContainerFocus, handleContainerBlur, handleContainerPointerMove, revealSection, revealFromKeyboard, } = useDualTierReveal({ activeLabel: findActiveItem(sections, activeUrl)?.label, sections });
70
+ // The panel renders through the overlay portal, outside the rail in the DOM, so both hooks reach it by ref.
71
+ const panelRef = useRef(null);
72
+ const { currentLabel, setCurrentLabel, currentItem, isSecondarySidebarVisible, setIsHovering, setIsAccountMenuOpen, handleContainerFocus, handleContainerBlur, handleContainerPointerMove, revealSection, revealFromKeyboard, } = useDualTierReveal({ activeLabel: findActiveItem(sections, activeUrl)?.label, sections, panelRef });
70
73
  const panelId = useId();
71
74
  // Ties the built-in mobile toggle to the drawer it opens via `aria-controls`.
72
75
  const mobileMenuId = useId();
73
- const { panelRef, handleTriggerKeyDown, handlePanelKeyDown } = useDualTierKeyboard({
76
+ const { handleTriggerKeyDown, handlePanelKeyDown } = useDualTierKeyboard({
77
+ panelRef,
74
78
  isPanelVisible: isSecondarySidebarVisible,
75
79
  currentLabel,
76
80
  onSelectSection: setCurrentLabel,
@@ -119,7 +123,11 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, onNavi
119
123
  onClick?.();
120
124
  };
121
125
  const withMobileMenuClose = (menuItems) => menuItems?.map((item) => ({ ...item, onClick: closeMobileMenuThen(item.onClick) }));
122
- const secondarySidebar = currentItem && (jsx(AnimatePresence, { initial: false, children: isSecondarySidebarVisible && (jsx(motion.div, { ref: panelRef, id: panelId, onKeyDown: handlePanelKeyDown, role: "group", "aria-label": `${currentItem.label} pages`, initial: { width: 0, borderColor: 'var(--color-border-secondary)' }, animate: { width: SECONDARY_SIDEBAR_WIDTH, borderColor: 'var(--color-border-secondary)' }, exit: { width: 0, borderColor: 'rgba(0,0,0,0)', transition: { borderColor: { type: 'tween', delay: 0.05 } } }, transition: SIDEBAR_SPRING, className: cx('relative h-full overflow-x-hidden overflow-y-auto bg-primary', !(hideBorder || hideRightBorder) && 'box-content border-r border-secondary'), children: jsxs("div", { style: { width: SECONDARY_SIDEBAR_WIDTH }, className: "flex h-full flex-col px-4 pt-6", children: [jsx("h3", { className: "px-2 text-sm font-semibold text-tertiary", children: currentItem.label }), jsx("ul", { className: "py-2", children: currentItem.items?.map((item) => (jsx("li", { className: "py-px", children: jsx(NavItemBase, { type: "link", current: item.href === activeHref, href: item.href, icon: item.icon, badge: item.badge, onClick: () => reportNavigation(item.href), "data-testid": item['data-testid'] ?? joinTestId(navItemTestId(currentItem), `sub-item-${item.id ?? slugifyTestId(item.label)}`), children: item.label }) }, item.label))) }), currentItem.toggle && (jsx(NavSectionToggleRow, { toggle: currentItem.toggle, testIdPrefix: navItemTestId(currentItem), className: "mt-auto mb-4" }))] }) })) }));
126
+ // Portaled one tier above the overlay root: inside the rail it painted under a page's SlideoutMenu or Popover, and at the
127
+ // overlays' own z-50 it lost to an embedded app's anchor when a host keeps the rail on `body`; the token's fallback is that z-50.
128
+ // React Aria places tooltips and menus at 100000, so they still win; a hover latched before another tree's modal opens shows it over the backdrop.
129
+ const railWidth = isCollapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH;
130
+ const secondarySidebar = currentItem && (jsx(AnimatePresence, { initial: false, children: isSecondarySidebarVisible && (jsx(Overlay, { children: jsx(motion.div, { ref: panelRef, id: panelId, "data-testid": joinTestId(rootTestId, 'panel'), onKeyDown: handlePanelKeyDown, role: "group", "aria-label": `${currentItem.label} pages`, initial: { width: 0, left: railWidth, borderColor: 'var(--color-border-secondary)' }, animate: { width: SECONDARY_SIDEBAR_WIDTH, left: railWidth, borderColor: 'var(--color-border-secondary)' }, exit: { width: 0, borderColor: 'rgba(0,0,0,0)', transition: { borderColor: { type: 'tween', delay: 0.05 } } }, transition: { ...SIDEBAR_SPRING, left: resizeTransition }, className: cx('fixed inset-y-0 z-[calc(var(--z-index-overlay-root,50)+1)] hidden overflow-x-hidden overflow-y-auto bg-primary lg:block', !(hideBorder || hideRightBorder) && 'box-content border-r border-secondary'), children: jsxs("div", { style: { width: SECONDARY_SIDEBAR_WIDTH }, className: "flex h-full flex-col px-4 pt-6", children: [jsx("h3", { className: "px-2 text-sm font-semibold text-tertiary", children: currentItem.label }), jsx("ul", { className: "py-2", children: currentItem.items?.map((item) => (jsx("li", { className: "py-px", children: jsx(NavItemBase, { type: "link", current: item.href === activeHref, href: item.href, icon: item.icon, badge: item.badge, onClick: () => reportNavigation(item.href), "data-testid": item['data-testid'] ?? joinTestId(navItemTestId(currentItem), `sub-item-${item.id ?? slugifyTestId(item.label)}`), children: item.label }) }, item.label))) }), currentItem.toggle && (jsx(NavSectionToggleRow, { toggle: currentItem.toggle, testIdPrefix: navItemTestId(currentItem), className: "mt-auto mb-4" }))] }) }) }, "dual-tier-panel")) }));
123
131
  return (jsxs(TestIdProvider, { value: rootTestId, children: [jsxs("div", { className: "z-40 hidden lg:fixed lg:inset-y-0 lg:left-0 lg:flex", onPointerEnter: () => setIsHovering(true), onPointerMove: handleContainerPointerMove, onPointerLeave: () => setIsHovering(false), onFocus: handleContainerFocus, onBlur: handleContainerBlur, children: [mainSidebar, secondarySidebar] }), jsx(motion.div, { initial: false, animate: { paddingLeft: isCollapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH }, transition: resizeTransition, className: "invisible hidden lg:sticky lg:top-0 lg:bottom-0 lg:left-0 lg:block" }), showMobileHeader && (jsx(MobileNavigationHeader, { isOpen: isMobileMenuOpen, onOpenChange: setMobileMenuOpen, controls: mobileMenuId, homeHref: homeHref, onHomePress: () => reportNavigation(homeHref), logoTestId: joinTestId(rootTestId, 'mobile-logo'), "data-testid": joinTestId(rootTestId, 'mobile-toggle') })), jsx(MobileNavigationDrawer, { id: mobileMenuId, isOpen: isMobileMenuOpen, onOpenChange: setMobileMenuOpen, "data-testid": joinTestId(rootTestId, 'mobile-close'), children: jsxs("aside", { className: "group flex h-full max-h-full w-full max-w-full flex-col justify-between overflow-y-auto bg-secondary pt-4", children: [jsxs("div", { className: "flex flex-col items-start gap-7 px-4", children: [jsx(LogoLink, { href: homeHref, size: "sm", onClick: () => handleMobileNavigate(homeHref), "data-testid": joinTestId(rootTestId, 'drawer-logo') }), search && (jsx(SearchTrigger, { size: "md", placeholder: search.placeholder ?? 'Search', label: search.label ?? 'Search', onPress: closeMobileMenuThen(search.onPress), className: "w-full", "data-testid": search['data-testid'] ?? joinTestId(rootTestId, 'search') }))] }), jsx("nav", { "aria-label": "Main", children: jsx(NavList, { activeUrl: activeUrl, items: items, onNavigate: handleMobileNavigate, testIdPrefix: rootTestId }) }), jsxs("div", { className: "mt-auto flex flex-col gap-3 p-4", children: [footerItems.length > 0 && (jsx("nav", { "aria-label": "Footer", children: jsx(NavList, { activeUrl: activeUrl, items: footerItems, onNavigate: handleMobileNavigate, testIdPrefix: rootTestId, className: "px-0 pt-0" }) })), account && (jsx(NavAccountCard, { account: account.account, menuItems: withMobileMenuClose(account.menuItems), bottomMenuItems: withMobileMenuClose(account.bottomMenuItems), "data-testid": account['data-testid'] }))] })] }) })] }));
124
132
  };
125
133
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/organisms/SidebarNavigation/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/organisms/SidebarNavigation/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var cx = require('@flipdish/ui-library/utilities/cx');
5
+ var testIdUtils = require('@flipdish/ui-library/utilities/testIdUtils');
6
+ var react = require('motion/react');
7
+ var React = require('react');
8
+ var reactAria = require('react-aria');
9
+ var reactAriaComponents = require('react-aria-components');
10
+ var focus_utils = require('../../../../utilities/__internal__/focusUtils/focus.utils.cjs');
11
+ var hotkeys_utils = require('../../../../utilities/__internal__/hotkeysUtils/hotkeys.utils.cjs');
12
+ var usePanelFocus = require('../../SidePanel/hooks/usePanelFocus.cjs');
13
+ var useSlideoutState = require('../hooks/useSlideoutState.cjs');
14
+ var OverlayBounds_context = require('../providers/OverlayBounds.context.cjs');
15
+ var SlideoutMenu_context = require('../providers/SlideoutMenu.context.cjs');
16
+ var slideoutMenu_utils = require('../utilities/slideoutMenu.utils.cjs');
17
+
18
+ const SLIDE = { type: 'tween', duration: 0.3, ease: 'easeOut' };
19
+ const SLIDE_OUT = { type: 'tween', duration: 0.3, ease: 'easeIn' };
20
+ /** The panel itself. A component of its own so it can tell, while animating out, that it is leaving. */
21
+ const SlideoutPanel = ({ openState, label, labelledBy, boundsStyle, rootTestId, isKeyboardDismissDisabled, children, className, dialogClassName, }) => {
22
+ const panelRef = React.useRef(null);
23
+ const dialogRef = React.useRef(null);
24
+ const isPresent = react.useIsPresent();
25
+ const shouldReduceMotion = react.useReducedMotion();
26
+ // Escape inside the panel; nothing outside is listened to for clicks, so the page stays usable and a click there never closes it.
27
+ const { overlayProps } = reactAria.useOverlay({ isOpen: isPresent, onClose: openState.close, isDismissable: false, shouldCloseOnBlur: false, isKeyboardDismissDisabled }, panelRef);
28
+ // Escape anywhere on the page closes it too: the panel is the transient thing the user opened. Not when another overlay
29
+ // took the key first (they prevent default on their own Escape and run before a document listener), and not from a field
30
+ // outside the panel, where Escape belongs to the field. Focus is left where the user put it.
31
+ const closeRef = React.useRef(openState.close);
32
+ closeRef.current = openState.close;
33
+ React.useEffect(() => {
34
+ if (!isPresent || isKeyboardDismissDisabled)
35
+ return;
36
+ const onKeyDown = (event) => {
37
+ if (event.key !== 'Escape' || event.defaultPrevented || event.isComposing)
38
+ return;
39
+ if (event.target instanceof Node && panelRef.current?.contains(event.target))
40
+ return;
41
+ if (hotkeys_utils.isTypingInField(event))
42
+ return;
43
+ closeRef.current();
44
+ };
45
+ document.addEventListener('keydown', onKeyDown);
46
+ return () => document.removeEventListener('keydown', onKeyDown);
47
+ }, [isPresent, isKeyboardDismissDisabled]);
48
+ // react-aria's `useDialog` already focuses the dialog on mount; this hook is here for the hand-back on close and the inert exit,
49
+ // and `shouldFocusOnMount` is what makes it record the opener. The panel never covers the page, so `isDesktop` stays true.
50
+ const { onFocusCapture, setOpener } = usePanelFocus.usePanelFocus({ panelRef: dialogRef, isPresent, isDesktop: true, shouldFocusOnMount: true });
51
+ // A row opened by mouse selects on pointerdown, so the panel focuses itself before the browser's own mousedown focus lands
52
+ // back on the row. Settle one frame later: if nothing inside holds focus by then, the dialog takes it. A new gesture before
53
+ // that frame means the user has moved on, such as to the next row, and the frame is dropped so focus is not pulled back.
54
+ React.useEffect(() => {
55
+ if (!isPresent)
56
+ return;
57
+ const stopWatching = () => {
58
+ document.removeEventListener('pointerdown', cancel, true);
59
+ document.removeEventListener('keydown', cancel, true);
60
+ };
61
+ const frame = requestAnimationFrame(() => {
62
+ stopWatching();
63
+ const dialog = dialogRef.current;
64
+ const focused = focus_utils.getFocusedElement();
65
+ if (dialog && !(focused && dialog.contains(focused)))
66
+ dialog.focus({ preventScroll: true });
67
+ });
68
+ const cancel = () => {
69
+ cancelAnimationFrame(frame);
70
+ stopWatching();
71
+ };
72
+ document.addEventListener('pointerdown', cancel, true);
73
+ document.addEventListener('keydown', cancel, true);
74
+ return cancel;
75
+ }, [isPresent]);
76
+ // A content swap leaves focus on the row the user clicked, so the new title is spoken instead; with focus inside, the user
77
+ // is already reading the panel and hears the change as they move. The last title lives here, not in `Header`, since a swap
78
+ // between loading and loaded content remounts the header; the first title is the open, which the dialog announces itself.
79
+ const [announcement, setAnnouncement] = React.useState('');
80
+ const lastTitle = React.useRef(null);
81
+ const announceTitle = React.useCallback((title) => {
82
+ const previous = lastTitle.current;
83
+ lastTitle.current = title;
84
+ if (previous === null || title === previous)
85
+ return;
86
+ const focused = focus_utils.getFocusedElement();
87
+ if (focused && panelRef.current?.contains(focused))
88
+ return;
89
+ // The control that swapped the content is what closing hands focus back to, not the one that first opened the panel.
90
+ if (focused)
91
+ setOpener(focused);
92
+ setAnnouncement(title);
93
+ }, [setOpener]);
94
+ return (
95
+ // The clip box covers exactly the page area and takes no clicks, so the slide-in is cut at the area's edge instead of
96
+ // crossing the header or a docked panel, and the panel's width is a share of the area, not of the viewport.
97
+ jsxRuntime.jsx("div", { style: boundsStyle, className: "pointer-events-none fixed z-50 overflow-clip", children: jsxRuntime.jsxs(react.motion.div, { ref: panelRef, onKeyDown: overlayProps.onKeyDown, onFocusCapture: onFocusCapture, initial: { x: '100%' }, animate: { x: 0 }, exit: { x: '100%', transition: shouldReduceMotion ? { duration: 0 } : SLIDE_OUT }, transition: shouldReduceMotion ? { duration: 0 } : SLIDE,
98
+ // Below `lg` the panel fills the page area, as a side panel does; from `lg` it is 400px, or the area when that is narrower.
99
+ className: cx.cx('pointer-events-auto absolute inset-y-0 right-0 flex w-full shadow-xl lg:max-w-[min(25rem,100%)]', className), children: [jsxRuntime.jsx(SlideoutMenu_context.SlideoutMenuContext.Provider, { value: { close: openState.close, label, announceTitle }, children: jsxRuntime.jsx(reactAria.FocusScope, { restoreFocus: true, children: jsxRuntime.jsx(reactAriaComponents.Dialog, { ref: dialogRef, role: "dialog", "aria-label": label, "aria-labelledby": labelledBy, "data-testid": rootTestId, className: cx.cx('relative flex size-full flex-col items-start gap-6 overflow-y-auto bg-primary ring-1 ring-secondary_alt outline-hidden', dialogClassName), children: ({ close }) => (typeof children === 'function' ? children({ close }) : children) }) }) }), jsxRuntime.jsx("output", { className: "sr-only", children: announcement })] }) }));
100
+ };
101
+ /**
102
+ * Non-modal shell: portals the panel to the app's overlay root, keeps it mounted through its exit slide,
103
+ * and shares the open state with a surrounding `SlideoutMenu.Trigger`. Nothing is dimmed, locked or
104
+ * made inert; the page behind stays usable.
105
+ */
106
+ const SlideoutShell = ({ isOpen, defaultOpen, onOpenChange, isKeyboardDismissDisabled, bounds, 'aria-label': ariaLabel, 'aria-labelledby': labelledBy, children, className, dialogClassName, 'data-testid': dataTestId, }) => {
107
+ const rootTestId = testIdUtils.useResolvedTestId({ testId: dataTestId, segment: 'slideout-menu', rootName: 'slideout-menu' });
108
+ const triggerState = React.useContext(reactAriaComponents.OverlayTriggerStateContext);
109
+ const local = useSlideoutState.useSlideoutState({ isOpen, defaultOpen, onOpenChange });
110
+ // As react-aria's Modal does: explicit open props win over a surrounding Trigger's state.
111
+ const openState = isOpen !== undefined || defaultOpen !== undefined || !triggerState ? local : triggerState;
112
+ const measured = React.useContext(OverlayBounds_context.OverlayBoundsContext);
113
+ const boundsStyle = slideoutMenu_utils.resolveSlideoutBounds(bounds, measured);
114
+ // A heading named through `aria-labelledby` replaces the default name; an explicit `aria-label` still wins.
115
+ const label = ariaLabel ?? (labelledBy ? undefined : 'Slideout menu');
116
+ return (jsxRuntime.jsx(testIdUtils.TestIdProvider, { value: rootTestId, children: jsxRuntime.jsx(react.AnimatePresence, { children: openState.isOpen && (jsxRuntime.jsx(reactAria.Overlay, { disableFocusManagement: true, children: jsxRuntime.jsx(reactAriaComponents.OverlayTriggerStateContext.Provider, { value: openState, children: jsxRuntime.jsx(SlideoutPanel, { openState: openState, label: label, labelledBy: labelledBy, boundsStyle: boundsStyle, rootTestId: rootTestId, isKeyboardDismissDisabled: isKeyboardDismissDisabled, className: className, dialogClassName: dialogClassName, children: children }) }) }, "slideout-menu")) }) }));
117
+ };
118
+ SlideoutShell.displayName = 'SlideoutShell';
119
+
120
+ exports.SlideoutShell = SlideoutShell;
121
+ //# sourceMappingURL=SlideoutShell.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlideoutShell.cjs","sources":["../../../../../src/components/organisms/SlideoutMenu/components/SlideoutShell.tsx"],"sourcesContent":[null],"names":["useRef","useIsPresent","useReducedMotion","useOverlay","useEffect","isTypingInField","usePanelFocus","getFocusedElement","useState","useCallback","_jsx","_jsxs","motion","cx","SlideoutMenuContext","FocusScope","AriaDialog","useResolvedTestId","useContext","OverlayTriggerStateContext","useSlideoutState","OverlayBoundsContext","resolveSlideoutBounds","TestIdProvider","AnimatePresence","Overlay"],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { SlideoutBounds } from '../utilities/slideoutMenu.utils';
3
+ /** What the render-prop form of `children` receives. */
4
+ export interface SlideoutRenderProps {
5
+ /** Closes the panel. */
6
+ close: () => void;
7
+ }
8
+ export interface SlideoutShellProps {
9
+ isOpen?: boolean;
10
+ defaultOpen?: boolean;
11
+ onOpenChange?: (isOpen: boolean) => void;
12
+ isKeyboardDismissDisabled?: boolean;
13
+ bounds?: SlideoutBounds;
14
+ 'aria-label'?: string;
15
+ 'aria-labelledby'?: string;
16
+ children: ReactNode | ((state: SlideoutRenderProps) => ReactNode);
17
+ className?: string;
18
+ dialogClassName?: string;
19
+ 'data-testid'?: string;
20
+ }
21
+ /**
22
+ * Non-modal shell: portals the panel to the app's overlay root, keeps it mounted through its exit slide,
23
+ * and shares the open state with a surrounding `SlideoutMenu.Trigger`. Nothing is dimmed, locked or
24
+ * made inert; the page behind stays usable.
25
+ */
26
+ export declare const SlideoutShell: {
27
+ ({ isOpen, defaultOpen, onOpenChange, isKeyboardDismissDisabled, bounds, "aria-label": ariaLabel, "aria-labelledby": labelledBy, children, className, dialogClassName, "data-testid": dataTestId, }: SlideoutShellProps): import("react").JSX.Element;
28
+ displayName: string;
29
+ };
30
+ //# sourceMappingURL=SlideoutShell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlideoutShell.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/SlideoutMenu/components/SlideoutShell.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAC;AAWtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAGtE,wDAAwD;AACxD,MAAM,WAAW,mBAAmB;IAClC,wBAAwB;IACxB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,mBAAmB,KAAK,SAAS,CAAC,CAAC;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA0ID;;;;GAIG;AACH,eAAO,MAAM,aAAa;yMAYvB,kBAAkB;;CAmCpB,CAAC"}
@@ -0,0 +1,119 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { cx } from '@flipdish/ui-library/utilities/cx';
3
+ import { useResolvedTestId, TestIdProvider } from '@flipdish/ui-library/utilities/testIdUtils';
4
+ import { AnimatePresence, useIsPresent, useReducedMotion, motion } from 'motion/react';
5
+ import { useContext, useRef, useEffect, useState, useCallback } from 'react';
6
+ import { Overlay, useOverlay, FocusScope } from 'react-aria';
7
+ import { OverlayTriggerStateContext, Dialog } from 'react-aria-components';
8
+ import { getFocusedElement } from '../../../../utilities/__internal__/focusUtils/focus.utils.js';
9
+ import { isTypingInField } from '../../../../utilities/__internal__/hotkeysUtils/hotkeys.utils.js';
10
+ import { usePanelFocus } from '../../SidePanel/hooks/usePanelFocus.js';
11
+ import { useSlideoutState } from '../hooks/useSlideoutState.js';
12
+ import { OverlayBoundsContext } from '../providers/OverlayBounds.context.js';
13
+ import { SlideoutMenuContext } from '../providers/SlideoutMenu.context.js';
14
+ import { resolveSlideoutBounds } from '../utilities/slideoutMenu.utils.js';
15
+
16
+ const SLIDE = { type: 'tween', duration: 0.3, ease: 'easeOut' };
17
+ const SLIDE_OUT = { type: 'tween', duration: 0.3, ease: 'easeIn' };
18
+ /** The panel itself. A component of its own so it can tell, while animating out, that it is leaving. */
19
+ const SlideoutPanel = ({ openState, label, labelledBy, boundsStyle, rootTestId, isKeyboardDismissDisabled, children, className, dialogClassName, }) => {
20
+ const panelRef = useRef(null);
21
+ const dialogRef = useRef(null);
22
+ const isPresent = useIsPresent();
23
+ const shouldReduceMotion = useReducedMotion();
24
+ // Escape inside the panel; nothing outside is listened to for clicks, so the page stays usable and a click there never closes it.
25
+ const { overlayProps } = useOverlay({ isOpen: isPresent, onClose: openState.close, isDismissable: false, shouldCloseOnBlur: false, isKeyboardDismissDisabled }, panelRef);
26
+ // Escape anywhere on the page closes it too: the panel is the transient thing the user opened. Not when another overlay
27
+ // took the key first (they prevent default on their own Escape and run before a document listener), and not from a field
28
+ // outside the panel, where Escape belongs to the field. Focus is left where the user put it.
29
+ const closeRef = useRef(openState.close);
30
+ closeRef.current = openState.close;
31
+ useEffect(() => {
32
+ if (!isPresent || isKeyboardDismissDisabled)
33
+ return;
34
+ const onKeyDown = (event) => {
35
+ if (event.key !== 'Escape' || event.defaultPrevented || event.isComposing)
36
+ return;
37
+ if (event.target instanceof Node && panelRef.current?.contains(event.target))
38
+ return;
39
+ if (isTypingInField(event))
40
+ return;
41
+ closeRef.current();
42
+ };
43
+ document.addEventListener('keydown', onKeyDown);
44
+ return () => document.removeEventListener('keydown', onKeyDown);
45
+ }, [isPresent, isKeyboardDismissDisabled]);
46
+ // react-aria's `useDialog` already focuses the dialog on mount; this hook is here for the hand-back on close and the inert exit,
47
+ // and `shouldFocusOnMount` is what makes it record the opener. The panel never covers the page, so `isDesktop` stays true.
48
+ const { onFocusCapture, setOpener } = usePanelFocus({ panelRef: dialogRef, isPresent, isDesktop: true, shouldFocusOnMount: true });
49
+ // A row opened by mouse selects on pointerdown, so the panel focuses itself before the browser's own mousedown focus lands
50
+ // back on the row. Settle one frame later: if nothing inside holds focus by then, the dialog takes it. A new gesture before
51
+ // that frame means the user has moved on, such as to the next row, and the frame is dropped so focus is not pulled back.
52
+ useEffect(() => {
53
+ if (!isPresent)
54
+ return;
55
+ const stopWatching = () => {
56
+ document.removeEventListener('pointerdown', cancel, true);
57
+ document.removeEventListener('keydown', cancel, true);
58
+ };
59
+ const frame = requestAnimationFrame(() => {
60
+ stopWatching();
61
+ const dialog = dialogRef.current;
62
+ const focused = getFocusedElement();
63
+ if (dialog && !(focused && dialog.contains(focused)))
64
+ dialog.focus({ preventScroll: true });
65
+ });
66
+ const cancel = () => {
67
+ cancelAnimationFrame(frame);
68
+ stopWatching();
69
+ };
70
+ document.addEventListener('pointerdown', cancel, true);
71
+ document.addEventListener('keydown', cancel, true);
72
+ return cancel;
73
+ }, [isPresent]);
74
+ // A content swap leaves focus on the row the user clicked, so the new title is spoken instead; with focus inside, the user
75
+ // is already reading the panel and hears the change as they move. The last title lives here, not in `Header`, since a swap
76
+ // between loading and loaded content remounts the header; the first title is the open, which the dialog announces itself.
77
+ const [announcement, setAnnouncement] = useState('');
78
+ const lastTitle = useRef(null);
79
+ const announceTitle = useCallback((title) => {
80
+ const previous = lastTitle.current;
81
+ lastTitle.current = title;
82
+ if (previous === null || title === previous)
83
+ return;
84
+ const focused = getFocusedElement();
85
+ if (focused && panelRef.current?.contains(focused))
86
+ return;
87
+ // The control that swapped the content is what closing hands focus back to, not the one that first opened the panel.
88
+ if (focused)
89
+ setOpener(focused);
90
+ setAnnouncement(title);
91
+ }, [setOpener]);
92
+ return (
93
+ // The clip box covers exactly the page area and takes no clicks, so the slide-in is cut at the area's edge instead of
94
+ // crossing the header or a docked panel, and the panel's width is a share of the area, not of the viewport.
95
+ jsx("div", { style: boundsStyle, className: "pointer-events-none fixed z-50 overflow-clip", children: jsxs(motion.div, { ref: panelRef, onKeyDown: overlayProps.onKeyDown, onFocusCapture: onFocusCapture, initial: { x: '100%' }, animate: { x: 0 }, exit: { x: '100%', transition: shouldReduceMotion ? { duration: 0 } : SLIDE_OUT }, transition: shouldReduceMotion ? { duration: 0 } : SLIDE,
96
+ // Below `lg` the panel fills the page area, as a side panel does; from `lg` it is 400px, or the area when that is narrower.
97
+ className: cx('pointer-events-auto absolute inset-y-0 right-0 flex w-full shadow-xl lg:max-w-[min(25rem,100%)]', className), children: [jsx(SlideoutMenuContext.Provider, { value: { close: openState.close, label, announceTitle }, children: jsx(FocusScope, { restoreFocus: true, children: jsx(Dialog, { ref: dialogRef, role: "dialog", "aria-label": label, "aria-labelledby": labelledBy, "data-testid": rootTestId, className: cx('relative flex size-full flex-col items-start gap-6 overflow-y-auto bg-primary ring-1 ring-secondary_alt outline-hidden', dialogClassName), children: ({ close }) => (typeof children === 'function' ? children({ close }) : children) }) }) }), jsx("output", { className: "sr-only", children: announcement })] }) }));
98
+ };
99
+ /**
100
+ * Non-modal shell: portals the panel to the app's overlay root, keeps it mounted through its exit slide,
101
+ * and shares the open state with a surrounding `SlideoutMenu.Trigger`. Nothing is dimmed, locked or
102
+ * made inert; the page behind stays usable.
103
+ */
104
+ const SlideoutShell = ({ isOpen, defaultOpen, onOpenChange, isKeyboardDismissDisabled, bounds, 'aria-label': ariaLabel, 'aria-labelledby': labelledBy, children, className, dialogClassName, 'data-testid': dataTestId, }) => {
105
+ const rootTestId = useResolvedTestId({ testId: dataTestId, segment: 'slideout-menu', rootName: 'slideout-menu' });
106
+ const triggerState = useContext(OverlayTriggerStateContext);
107
+ const local = useSlideoutState({ isOpen, defaultOpen, onOpenChange });
108
+ // As react-aria's Modal does: explicit open props win over a surrounding Trigger's state.
109
+ const openState = isOpen !== undefined || defaultOpen !== undefined || !triggerState ? local : triggerState;
110
+ const measured = useContext(OverlayBoundsContext);
111
+ const boundsStyle = resolveSlideoutBounds(bounds, measured);
112
+ // A heading named through `aria-labelledby` replaces the default name; an explicit `aria-label` still wins.
113
+ const label = ariaLabel ?? (labelledBy ? undefined : 'Slideout menu');
114
+ return (jsx(TestIdProvider, { value: rootTestId, children: jsx(AnimatePresence, { children: openState.isOpen && (jsx(Overlay, { disableFocusManagement: true, children: jsx(OverlayTriggerStateContext.Provider, { value: openState, children: jsx(SlideoutPanel, { openState: openState, label: label, labelledBy: labelledBy, boundsStyle: boundsStyle, rootTestId: rootTestId, isKeyboardDismissDisabled: isKeyboardDismissDisabled, className: className, dialogClassName: dialogClassName, children: children }) }) }, "slideout-menu")) }) }));
115
+ };
116
+ SlideoutShell.displayName = 'SlideoutShell';
117
+
118
+ export { SlideoutShell };
119
+ //# sourceMappingURL=SlideoutShell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlideoutShell.js","sources":["../../../../../src/components/organisms/SlideoutMenu/components/SlideoutShell.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","AriaDialog"],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+
5
+ /**
6
+ * Owns the panel's open state, controlled or uncontrolled by the usual pair of props, in the shape
7
+ * react-aria's trigger state has so a surrounding `DialogTrigger` and the `Dialog` inside can share it.
8
+ *
9
+ * @param options The open props as the consumer passed them.
10
+ * @returns The open state, with a stable identity across renders.
11
+ */
12
+ const useSlideoutState = ({ isOpen, defaultOpen, onOpenChange }) => {
13
+ const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen ?? false);
14
+ const isOpenControlled = isOpen !== undefined;
15
+ const resolvedOpen = isOpenControlled ? isOpen : uncontrolledOpen;
16
+ // The latest callback and value live in refs so the returned API keeps its identity across renders.
17
+ const onOpenChangeRef = React.useRef(onOpenChange);
18
+ const isOpenRef = React.useRef(resolvedOpen);
19
+ React.useEffect(() => {
20
+ onOpenChangeRef.current = onOpenChange;
21
+ isOpenRef.current = resolvedOpen;
22
+ });
23
+ const setOpen = React.useCallback((next) => {
24
+ if (!isOpenControlled)
25
+ setUncontrolledOpen(next);
26
+ if (next !== isOpenRef.current)
27
+ onOpenChangeRef.current?.(next);
28
+ }, [isOpenControlled]);
29
+ return React.useMemo(() => ({
30
+ isOpen: resolvedOpen,
31
+ setOpen,
32
+ open: () => setOpen(true),
33
+ close: () => setOpen(false),
34
+ toggle: () => setOpen(!isOpenRef.current),
35
+ }), [resolvedOpen, setOpen]);
36
+ };
37
+
38
+ exports.useSlideoutState = useSlideoutState;
39
+ //# sourceMappingURL=useSlideoutState.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSlideoutState.cjs","sources":["../../../../../src/components/organisms/SlideoutMenu/hooks/useSlideoutState.ts"],"sourcesContent":[null],"names":["useState","useRef","useEffect","useCallback","useMemo"],"mappings":";;;;AAmBA;;;;;;AAMG;AACI,MAAM,gBAAgB,GAAG,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAA2B,KAAuB;AACpH,IAAA,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAGA,cAAQ,CAAC,WAAW,IAAI,KAAK,CAAC;AAC9E,IAAA,MAAM,gBAAgB,GAAG,MAAM,KAAK,SAAS;IAC7C,MAAM,YAAY,GAAG,gBAAgB,GAAG,MAAM,GAAG,gBAAgB;;AAGjE,IAAA,MAAM,eAAe,GAAGC,YAAM,CAAC,YAAY,CAAC;AAC5C,IAAA,MAAM,SAAS,GAAGA,YAAM,CAAC,YAAY,CAAC;IACtCC,eAAS,CAAC,MAAK;AACb,QAAA,eAAe,CAAC,OAAO,GAAG,YAAY;AACtC,QAAA,SAAS,CAAC,OAAO,GAAG,YAAY;AAClC,IAAA,CAAC,CAAC;AAEF,IAAA,MAAM,OAAO,GAAGC,iBAAW,CACzB,CAAC,IAAa,KAAI;AAChB,QAAA,IAAI,CAAC,gBAAgB;YAAE,mBAAmB,CAAC,IAAI,CAAC;AAChD,QAAA,IAAI,IAAI,KAAK,SAAS,CAAC,OAAO;AAAE,YAAA,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;AACjE,IAAA,CAAC,EACD,CAAC,gBAAgB,CAAC,CACnB;AAED,IAAA,OAAOC,aAAO,CACZ,OAAO;AACL,QAAA,MAAM,EAAE,YAAY;QACpB,OAAO;AACP,QAAA,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;AACzB,QAAA,KAAK,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC;QAC3B,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC;AAC1C,KAAA,CAAC,EACF,CAAC,YAAY,EAAE,OAAO,CAAC,CACxB;AACH;;"}
@@ -0,0 +1,23 @@
1
+ interface UseSlideoutStateOptions {
2
+ isOpen?: boolean;
3
+ defaultOpen?: boolean;
4
+ onOpenChange?: (isOpen: boolean) => void;
5
+ }
6
+ /** The open state in the shape react-aria's `OverlayTriggerState` has, so `Dialog` and `DialogTrigger` can share it. */
7
+ export interface SlideoutOpenState {
8
+ isOpen: boolean;
9
+ setOpen: (isOpen: boolean) => void;
10
+ open: () => void;
11
+ close: () => void;
12
+ toggle: () => void;
13
+ }
14
+ /**
15
+ * Owns the panel's open state, controlled or uncontrolled by the usual pair of props, in the shape
16
+ * react-aria's trigger state has so a surrounding `DialogTrigger` and the `Dialog` inside can share it.
17
+ *
18
+ * @param options The open props as the consumer passed them.
19
+ * @returns The open state, with a stable identity across renders.
20
+ */
21
+ export declare const useSlideoutState: ({ isOpen, defaultOpen, onOpenChange }: UseSlideoutStateOptions) => SlideoutOpenState;
22
+ export {};
23
+ //# sourceMappingURL=useSlideoutState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSlideoutState.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/SlideoutMenu/hooks/useSlideoutState.ts"],"names":[],"mappings":"AAIA,UAAU,uBAAuB;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C;AAED,wHAAwH;AACxH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAI,uCAAuC,uBAAuB,KAAG,iBA+BjG,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { useState, useRef, useEffect, useCallback, useMemo } from 'react';
2
+
3
+ /**
4
+ * Owns the panel's open state, controlled or uncontrolled by the usual pair of props, in the shape
5
+ * react-aria's trigger state has so a surrounding `DialogTrigger` and the `Dialog` inside can share it.
6
+ *
7
+ * @param options The open props as the consumer passed them.
8
+ * @returns The open state, with a stable identity across renders.
9
+ */
10
+ const useSlideoutState = ({ isOpen, defaultOpen, onOpenChange }) => {
11
+ const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen ?? false);
12
+ const isOpenControlled = isOpen !== undefined;
13
+ const resolvedOpen = isOpenControlled ? isOpen : uncontrolledOpen;
14
+ // The latest callback and value live in refs so the returned API keeps its identity across renders.
15
+ const onOpenChangeRef = useRef(onOpenChange);
16
+ const isOpenRef = useRef(resolvedOpen);
17
+ useEffect(() => {
18
+ onOpenChangeRef.current = onOpenChange;
19
+ isOpenRef.current = resolvedOpen;
20
+ });
21
+ const setOpen = useCallback((next) => {
22
+ if (!isOpenControlled)
23
+ setUncontrolledOpen(next);
24
+ if (next !== isOpenRef.current)
25
+ onOpenChangeRef.current?.(next);
26
+ }, [isOpenControlled]);
27
+ return useMemo(() => ({
28
+ isOpen: resolvedOpen,
29
+ setOpen,
30
+ open: () => setOpen(true),
31
+ close: () => setOpen(false),
32
+ toggle: () => setOpen(!isOpenRef.current),
33
+ }), [resolvedOpen, setOpen]);
34
+ };
35
+
36
+ export { useSlideoutState };
37
+ //# sourceMappingURL=useSlideoutState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSlideoutState.js","sources":["../../../../../src/components/organisms/SlideoutMenu/hooks/useSlideoutState.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAmBA;;;;;;AAMG;AACI,MAAM,gBAAgB,GAAG,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAA2B,KAAuB;AACpH,IAAA,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,WAAW,IAAI,KAAK,CAAC;AAC9E,IAAA,MAAM,gBAAgB,GAAG,MAAM,KAAK,SAAS;IAC7C,MAAM,YAAY,GAAG,gBAAgB,GAAG,MAAM,GAAG,gBAAgB;;AAGjE,IAAA,MAAM,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC;AAC5C,IAAA,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;IACtC,SAAS,CAAC,MAAK;AACb,QAAA,eAAe,CAAC,OAAO,GAAG,YAAY;AACtC,QAAA,SAAS,CAAC,OAAO,GAAG,YAAY;AAClC,IAAA,CAAC,CAAC;AAEF,IAAA,MAAM,OAAO,GAAG,WAAW,CACzB,CAAC,IAAa,KAAI;AAChB,QAAA,IAAI,CAAC,gBAAgB;YAAE,mBAAmB,CAAC,IAAI,CAAC;AAChD,QAAA,IAAI,IAAI,KAAK,SAAS,CAAC,OAAO;AAAE,YAAA,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;AACjE,IAAA,CAAC,EACD,CAAC,gBAAgB,CAAC,CACnB;AAED,IAAA,OAAO,OAAO,CACZ,OAAO;AACL,QAAA,MAAM,EAAE,YAAY;QACpB,OAAO;AACP,QAAA,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;AACzB,QAAA,KAAK,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC;QAC3B,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC;AAC1C,KAAA,CAAC,EACF,CAAC,YAAY,EAAE,OAAO,CAAC,CACxB;AACH;;"}