@salt-ds/lab 1.0.0-alpha.95 → 1.0.0-alpha.96

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 (153) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/css/salt-lab.css +70 -49
  3. package/dist-cjs/index.js +12 -8
  4. package/dist-cjs/index.js.map +1 -1
  5. package/dist-cjs/mega-menu/MegaMenu.js +8 -14
  6. package/dist-cjs/mega-menu/MegaMenu.js.map +1 -1
  7. package/dist-cjs/mega-menu/MegaMenuActions.css.js +6 -0
  8. package/dist-cjs/mega-menu/MegaMenuActions.css.js.map +1 -0
  9. package/dist-cjs/mega-menu/MegaMenuActions.js +33 -0
  10. package/dist-cjs/mega-menu/MegaMenuActions.js.map +1 -0
  11. package/dist-cjs/mega-menu/MegaMenuAside.css.js +6 -0
  12. package/dist-cjs/mega-menu/MegaMenuAside.css.js.map +1 -0
  13. package/dist-cjs/mega-menu/MegaMenuAside.js +33 -0
  14. package/dist-cjs/mega-menu/MegaMenuAside.js.map +1 -0
  15. package/dist-cjs/mega-menu/MegaMenuContent.css.js +6 -0
  16. package/dist-cjs/mega-menu/MegaMenuContent.css.js.map +1 -0
  17. package/dist-cjs/mega-menu/MegaMenuContent.js +25 -0
  18. package/dist-cjs/mega-menu/MegaMenuContent.js.map +1 -0
  19. package/dist-cjs/mega-menu/MegaMenuContext.js.map +1 -1
  20. package/dist-cjs/mega-menu/MegaMenuGroup.css.js +1 -1
  21. package/dist-cjs/mega-menu/MegaMenuGroup.js +10 -25
  22. package/dist-cjs/mega-menu/MegaMenuGroup.js.map +1 -1
  23. package/dist-cjs/mega-menu/MegaMenuGroupContext.js +17 -0
  24. package/dist-cjs/mega-menu/MegaMenuGroupContext.js.map +1 -0
  25. package/dist-cjs/mega-menu/MegaMenuGroupHeading.css.js +6 -0
  26. package/dist-cjs/mega-menu/MegaMenuGroupHeading.css.js.map +1 -0
  27. package/dist-cjs/mega-menu/MegaMenuGroupHeading.js +39 -0
  28. package/dist-cjs/mega-menu/MegaMenuGroupHeading.js.map +1 -0
  29. package/dist-cjs/mega-menu/MegaMenuGroups.css.js +1 -1
  30. package/dist-cjs/mega-menu/MegaMenuGroups.js.map +1 -1
  31. package/dist-cjs/mega-menu/MegaMenuList.css.js +6 -0
  32. package/dist-cjs/mega-menu/MegaMenuList.css.js.map +1 -0
  33. package/dist-cjs/mega-menu/MegaMenuList.js +43 -0
  34. package/dist-cjs/mega-menu/MegaMenuList.js.map +1 -0
  35. package/dist-cjs/mega-menu/MegaMenuListItem.css.js +6 -0
  36. package/dist-cjs/mega-menu/MegaMenuListItem.css.js.map +1 -0
  37. package/dist-cjs/mega-menu/MegaMenuListItem.js +45 -0
  38. package/dist-cjs/mega-menu/MegaMenuListItem.js.map +1 -0
  39. package/dist-cjs/mega-menu/MegaMenuPanel.css.js +1 -1
  40. package/dist-cjs/mega-menu/MegaMenuPanel.js +27 -47
  41. package/dist-cjs/mega-menu/MegaMenuPanel.js.map +1 -1
  42. package/dist-cjs/mega-menu/MegaMenuTrigger.js +16 -18
  43. package/dist-cjs/mega-menu/MegaMenuTrigger.js.map +1 -1
  44. package/dist-cjs/mega-menu/useMegaMenuNavigation.js +282 -0
  45. package/dist-cjs/mega-menu/useMegaMenuNavigation.js.map +1 -0
  46. package/dist-cjs/mega-menu/usePageMargin.js +22 -0
  47. package/dist-cjs/mega-menu/usePageMargin.js.map +1 -0
  48. package/dist-cjs/toolbar-next/useToolbarNextOverflow.js +9 -7
  49. package/dist-cjs/toolbar-next/useToolbarNextOverflow.js.map +1 -1
  50. package/dist-es/index.js +6 -4
  51. package/dist-es/index.js.map +1 -1
  52. package/dist-es/mega-menu/MegaMenu.js +9 -15
  53. package/dist-es/mega-menu/MegaMenu.js.map +1 -1
  54. package/dist-es/mega-menu/MegaMenuActions.css.js +4 -0
  55. package/dist-es/mega-menu/MegaMenuActions.css.js.map +1 -0
  56. package/dist-es/mega-menu/MegaMenuActions.js +31 -0
  57. package/dist-es/mega-menu/MegaMenuActions.js.map +1 -0
  58. package/dist-es/mega-menu/MegaMenuAside.css.js +4 -0
  59. package/dist-es/mega-menu/MegaMenuAside.css.js.map +1 -0
  60. package/dist-es/mega-menu/MegaMenuAside.js +31 -0
  61. package/dist-es/mega-menu/MegaMenuAside.js.map +1 -0
  62. package/dist-es/mega-menu/MegaMenuContent.css.js +4 -0
  63. package/dist-es/mega-menu/MegaMenuContent.css.js.map +1 -0
  64. package/dist-es/mega-menu/{MegaMenuHeader.js → MegaMenuContent.js} +8 -8
  65. package/dist-es/mega-menu/MegaMenuContent.js.map +1 -0
  66. package/dist-es/mega-menu/MegaMenuContext.js.map +1 -1
  67. package/dist-es/mega-menu/MegaMenuGroup.css.js +1 -1
  68. package/dist-es/mega-menu/MegaMenuGroup.js +13 -28
  69. package/dist-es/mega-menu/MegaMenuGroup.js.map +1 -1
  70. package/dist-es/mega-menu/MegaMenuGroupContext.js +14 -0
  71. package/dist-es/mega-menu/MegaMenuGroupContext.js.map +1 -0
  72. package/dist-es/mega-menu/MegaMenuGroupHeading.css.js +4 -0
  73. package/dist-es/mega-menu/MegaMenuGroupHeading.css.js.map +1 -0
  74. package/dist-es/mega-menu/MegaMenuGroupHeading.js +37 -0
  75. package/dist-es/mega-menu/MegaMenuGroupHeading.js.map +1 -0
  76. package/dist-es/mega-menu/MegaMenuGroups.css.js +1 -1
  77. package/dist-es/mega-menu/MegaMenuGroups.js.map +1 -1
  78. package/dist-es/mega-menu/MegaMenuList.css.js +4 -0
  79. package/dist-es/mega-menu/MegaMenuList.css.js.map +1 -0
  80. package/dist-es/mega-menu/MegaMenuList.js +41 -0
  81. package/dist-es/mega-menu/MegaMenuList.js.map +1 -0
  82. package/dist-es/mega-menu/MegaMenuListItem.css.js +4 -0
  83. package/dist-es/mega-menu/MegaMenuListItem.css.js.map +1 -0
  84. package/dist-es/mega-menu/MegaMenuListItem.js +43 -0
  85. package/dist-es/mega-menu/MegaMenuListItem.js.map +1 -0
  86. package/dist-es/mega-menu/MegaMenuPanel.css.js +1 -1
  87. package/dist-es/mega-menu/MegaMenuPanel.js +30 -50
  88. package/dist-es/mega-menu/MegaMenuPanel.js.map +1 -1
  89. package/dist-es/mega-menu/MegaMenuTrigger.js +14 -16
  90. package/dist-es/mega-menu/MegaMenuTrigger.js.map +1 -1
  91. package/dist-es/mega-menu/useMegaMenuNavigation.js +278 -0
  92. package/dist-es/mega-menu/useMegaMenuNavigation.js.map +1 -0
  93. package/dist-es/mega-menu/usePageMargin.js +20 -0
  94. package/dist-es/mega-menu/usePageMargin.js.map +1 -0
  95. package/dist-es/toolbar-next/useToolbarNextOverflow.js +9 -7
  96. package/dist-es/toolbar-next/useToolbarNextOverflow.js.map +1 -1
  97. package/dist-types/mega-menu/MegaMenu.d.ts +11 -2
  98. package/dist-types/mega-menu/MegaMenuActions.d.ts +10 -0
  99. package/dist-types/mega-menu/MegaMenuAside.d.ts +9 -0
  100. package/dist-types/mega-menu/MegaMenuContent.d.ts +9 -0
  101. package/dist-types/mega-menu/MegaMenuContext.d.ts +6 -7
  102. package/dist-types/mega-menu/MegaMenuGroup.d.ts +4 -3
  103. package/dist-types/mega-menu/MegaMenuGroupContext.d.ts +12 -0
  104. package/dist-types/mega-menu/MegaMenuGroupHeading.d.ts +13 -0
  105. package/dist-types/mega-menu/MegaMenuGroups.d.ts +3 -3
  106. package/dist-types/mega-menu/MegaMenuList.d.ts +16 -0
  107. package/dist-types/mega-menu/MegaMenuListItem.d.ts +25 -0
  108. package/dist-types/mega-menu/MegaMenuPanel.d.ts +2 -2
  109. package/dist-types/mega-menu/MegaMenuTrigger.d.ts +1 -0
  110. package/dist-types/mega-menu/index.d.ts +6 -4
  111. package/dist-types/mega-menu/useMegaMenuNavigation.d.ts +16 -0
  112. package/dist-types/mega-menu/usePageMargin.d.ts +6 -0
  113. package/package.json +2 -2
  114. package/dist-cjs/mega-menu/MegaMenuHeader.css.js +0 -6
  115. package/dist-cjs/mega-menu/MegaMenuHeader.css.js.map +0 -1
  116. package/dist-cjs/mega-menu/MegaMenuHeader.js +0 -25
  117. package/dist-cjs/mega-menu/MegaMenuHeader.js.map +0 -1
  118. package/dist-cjs/mega-menu/MegaMenuItem.css.js +0 -6
  119. package/dist-cjs/mega-menu/MegaMenuItem.css.js.map +0 -1
  120. package/dist-cjs/mega-menu/MegaMenuItem.js +0 -53
  121. package/dist-cjs/mega-menu/MegaMenuItem.js.map +0 -1
  122. package/dist-cjs/mega-menu/MegaMenuSupportingActions.css.js +0 -6
  123. package/dist-cjs/mega-menu/MegaMenuSupportingActions.css.js.map +0 -1
  124. package/dist-cjs/mega-menu/MegaMenuSupportingActions.js +0 -31
  125. package/dist-cjs/mega-menu/MegaMenuSupportingActions.js.map +0 -1
  126. package/dist-cjs/mega-menu/MegaMenuSupportingContent.css.js +0 -6
  127. package/dist-cjs/mega-menu/MegaMenuSupportingContent.css.js.map +0 -1
  128. package/dist-cjs/mega-menu/MegaMenuSupportingContent.js +0 -31
  129. package/dist-cjs/mega-menu/MegaMenuSupportingContent.js.map +0 -1
  130. package/dist-cjs/mega-menu/useMegaMenuKeyboard.js +0 -209
  131. package/dist-cjs/mega-menu/useMegaMenuKeyboard.js.map +0 -1
  132. package/dist-es/mega-menu/MegaMenuHeader.css.js +0 -4
  133. package/dist-es/mega-menu/MegaMenuHeader.css.js.map +0 -1
  134. package/dist-es/mega-menu/MegaMenuHeader.js.map +0 -1
  135. package/dist-es/mega-menu/MegaMenuItem.css.js +0 -4
  136. package/dist-es/mega-menu/MegaMenuItem.css.js.map +0 -1
  137. package/dist-es/mega-menu/MegaMenuItem.js +0 -51
  138. package/dist-es/mega-menu/MegaMenuItem.js.map +0 -1
  139. package/dist-es/mega-menu/MegaMenuSupportingActions.css.js +0 -4
  140. package/dist-es/mega-menu/MegaMenuSupportingActions.css.js.map +0 -1
  141. package/dist-es/mega-menu/MegaMenuSupportingActions.js +0 -29
  142. package/dist-es/mega-menu/MegaMenuSupportingActions.js.map +0 -1
  143. package/dist-es/mega-menu/MegaMenuSupportingContent.css.js +0 -4
  144. package/dist-es/mega-menu/MegaMenuSupportingContent.css.js.map +0 -1
  145. package/dist-es/mega-menu/MegaMenuSupportingContent.js +0 -29
  146. package/dist-es/mega-menu/MegaMenuSupportingContent.js.map +0 -1
  147. package/dist-es/mega-menu/useMegaMenuKeyboard.js +0 -205
  148. package/dist-es/mega-menu/useMegaMenuKeyboard.js.map +0 -1
  149. package/dist-types/mega-menu/MegaMenuHeader.d.ts +0 -8
  150. package/dist-types/mega-menu/MegaMenuItem.d.ts +0 -13
  151. package/dist-types/mega-menu/MegaMenuSupportingActions.d.ts +0 -8
  152. package/dist-types/mega-menu/MegaMenuSupportingContent.d.ts +0 -8
  153. package/dist-types/mega-menu/useMegaMenuKeyboard.d.ts +0 -30
@@ -1 +1 @@
1
- {"version":3,"file":"useToolbarNextOverflow.js","sources":["../src/toolbar-next/useToolbarNextOverflow.ts"],"sourcesContent":["import { ownerWindow, useIsomorphicLayoutEffect } from \"@salt-ds/core\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport type { ToolbarContentNextPosition } from \"./ToolbarContentNext\";\nimport {\n buildContentOverflowRenderSlots,\n type ToolbarNextContentModel,\n type ToolbarNextOverflowItem,\n} from \"./toolbarNextUtils\";\n\ninterface OverflowGroupDefinition {\n id: string;\n key: string;\n label: string;\n named: boolean;\n order: number;\n overflowGroup: string;\n contentKey?: string;\n}\n\ninterface CollapseUnit {\n groupKey: string;\n itemIds: string[];\n order: number;\n priority: number;\n}\n\nexport interface ToolbarNextOverflowGroup {\n id: string;\n items: ToolbarNextOverflowItem[];\n key: string;\n label: string;\n named: boolean;\n overflowGroup: string;\n contentKey?: string;\n}\n\ninterface OverflowState {\n overflowGroups: ToolbarNextOverflowGroup[];\n overflowedIds: Set<string>;\n}\n\ninterface UseToolbarNextOverflowProps {\n content: ToolbarNextContentModel[];\n}\n\ntype ObservedWidthTarget =\n | {\n kind: \"container\";\n }\n | {\n id: string;\n kind: \"item\";\n }\n | {\n id: string;\n kind: \"named-trigger\";\n }\n | {\n id: string;\n kind: \"named-trigger-measure\";\n }\n | {\n groupKey: string;\n kind: \"shared-trigger-measure\";\n };\n\nconst emptyOverflowState: OverflowState = {\n overflowGroups: [],\n overflowedIds: new Set<string>(),\n};\n\nconst bandPositions: ToolbarContentNextPosition[] = [\"start\", \"center\", \"end\"];\n\nfunction measureWidth(element: HTMLElement | null) {\n if (!element) {\n return 0;\n }\n\n const { width } = element.getBoundingClientRect();\n return Math.ceil(width);\n}\n\nfunction isVisibleMeasurementElement(element: Element): element is HTMLElement {\n if (!(element instanceof HTMLElement)) {\n return false;\n }\n\n const { width, height } = element.getBoundingClientRect();\n const styles = ownerWindow(element).getComputedStyle(element);\n\n return (\n width > 0 &&\n height > 0 &&\n styles.display !== \"none\" &&\n styles.visibility !== \"hidden\"\n );\n}\n\nfunction measureOverflowItemWidth(element: HTMLElement | null) {\n if (!element) {\n return 0;\n }\n\n const rect = element.getBoundingClientRect();\n let left = rect.left;\n let right = rect.right;\n\n for (const descendant of element.querySelectorAll(\"*\")) {\n if (!isVisibleMeasurementElement(descendant)) {\n continue;\n }\n\n const descendantRect = descendant.getBoundingClientRect();\n left = Math.min(left, descendantRect.left);\n right = Math.max(right, descendantRect.right);\n }\n\n return Math.ceil(Math.max(rect.width, right - left));\n}\n\nfunction readGap(gapValue: string) {\n return Number.parseFloat(gapValue || \"0\") || 0;\n}\n\nfunction sumFlexWidths(widths: number[], gap: number) {\n if (widths.length === 0) {\n return 0;\n }\n\n return (\n widths.reduce((total, width) => total + width, 0) +\n gap * (widths.length - 1)\n );\n}\n\nfunction buildGroupDefinitions(items: ToolbarNextOverflowItem[]) {\n const groupMap = new Map<string, OverflowGroupDefinition>();\n\n for (const [sequence, item] of items.entries()) {\n if (item.overflowMode === \"none\") {\n continue;\n }\n\n const existing = groupMap.get(item.overflowGroupKey);\n\n if (existing) {\n if (!existing.named && item.overflowGroup === \"shared\") {\n continue;\n }\n\n if (existing.label === item.overflowGroup && item.overflowLabel) {\n existing.label = item.overflowLabel;\n }\n\n continue;\n }\n\n groupMap.set(item.overflowGroupKey, {\n id: `${item.overflowGroupKey}-${sequence}`,\n key: item.overflowGroupKey,\n label:\n item.overflowGroup === \"shared\"\n ? \"More\"\n : (item.overflowLabel ?? item.overflowGroup),\n named: item.overflowGroup !== \"shared\",\n order: sequence,\n overflowGroup: item.overflowGroup,\n contentKey: item.overflowGroup === \"shared\" ? undefined : item.contentKey,\n });\n }\n\n return Array.from(groupMap.values()).sort(\n (left, right) => left.order - right.order,\n );\n}\n\nfunction buildCollapseUnits(items: ToolbarNextOverflowItem[]) {\n const groupedUnits = new Map<string, CollapseUnit>();\n const units: CollapseUnit[] = [];\n\n for (const [sequence, item] of items.entries()) {\n if (item.overflowMode === \"none\") {\n continue;\n }\n\n if (item.overflowMode === \"grouped\" && item.overflowGroup !== \"shared\") {\n const existing = groupedUnits.get(item.overflowGroupKey);\n\n if (existing) {\n existing.itemIds.push(item.id);\n existing.order = Math.max(existing.order, sequence);\n existing.priority = Math.max(existing.priority, item.overflowPriority);\n continue;\n }\n\n const unit: CollapseUnit = {\n groupKey: item.overflowGroupKey,\n itemIds: [item.id],\n order: sequence,\n priority: item.overflowPriority,\n };\n\n groupedUnits.set(item.overflowGroupKey, unit);\n units.push(unit);\n continue;\n }\n\n units.push({\n groupKey: item.overflowGroupKey,\n itemIds: [item.id],\n order: sequence,\n priority: item.overflowPriority,\n });\n }\n\n return units.sort((left, right) => {\n if (left.priority !== right.priority) {\n return right.priority - left.priority;\n }\n\n return right.order - left.order;\n });\n}\n\nfunction areOverflowStatesEqual(previous: OverflowState, next: OverflowState) {\n if (previous.overflowedIds.size !== next.overflowedIds.size) {\n return false;\n }\n\n for (const itemId of previous.overflowedIds) {\n if (!next.overflowedIds.has(itemId)) {\n return false;\n }\n }\n\n if (previous.overflowGroups.length !== next.overflowGroups.length) {\n return false;\n }\n\n return previous.overflowGroups.every((group, index) => {\n const nextGroup = next.overflowGroups[index];\n\n if (\n nextGroup == null ||\n group.id !== nextGroup.id ||\n group.label !== nextGroup.label ||\n group.items.length !== nextGroup.items.length\n ) {\n return false;\n }\n\n return group.items.every((item, itemIndex) => {\n return item.id === nextGroup.items[itemIndex]?.id;\n });\n });\n}\n\ninterface ComputeToolbarNextOverflowStateArgs {\n collapseUnits: CollapseUnit[];\n containerWidth: number;\n groupDefinitions: OverflowGroupDefinition[];\n itemWidths: Map<string, number>;\n items: ToolbarNextOverflowItem[];\n namedTriggerWidths: Map<string, number>;\n content: ToolbarNextContentModel[];\n contentGaps: Map<string, number>;\n rootGap: number;\n triggerWidths: Map<string, number>;\n bandGaps: Map<ToolbarContentNextPosition, number>;\n}\n\nfunction computeToolbarNextOverflowState({\n bandGaps,\n collapseUnits,\n containerWidth,\n groupDefinitions,\n itemWidths,\n items,\n namedTriggerWidths,\n content,\n contentGaps,\n rootGap,\n triggerWidths,\n}: ComputeToolbarNextOverflowStateArgs): OverflowState {\n const hasCenteredLayout = content.some(\n (contentArea) => contentArea.position === \"center\",\n );\n const contentByPosition = bandPositions.reduce<\n Record<ToolbarContentNextPosition, ToolbarNextContentModel[]>\n >(\n (bands, position) => {\n bands[position] = content.filter(\n (contentArea) => contentArea.position === position,\n );\n return bands;\n },\n {\n start: [],\n center: [],\n end: [],\n },\n );\n const overflowedIds = new Set<string>();\n const activeGroups = new Set<string>();\n\n const getContentWidth = (contentArea: ToolbarNextContentModel) => {\n const renderSlots = buildContentOverflowRenderSlots(\n contentArea.items,\n overflowedIds,\n new Set(\n groupDefinitions\n .filter((group) => {\n return (\n group.named &&\n group.contentKey === contentArea.key &&\n activeGroups.has(group.key)\n );\n })\n .map((group) => group.key),\n ),\n );\n const slotWidths: number[] = [];\n\n for (const slot of renderSlots) {\n const width =\n slot.triggerGroupKey != null\n ? namedTriggerWidths.get(slot.item.id)\n : itemWidths.get(slot.item.id);\n\n if (width == null || width <= 0) {\n return null;\n }\n\n slotWidths.push(width);\n }\n\n return sumFlexWidths(slotWidths, contentGaps.get(contentArea.key) ?? 0);\n };\n\n const getBandWidth = (position: ToolbarContentNextPosition) => {\n const bandChildWidths: number[] = [];\n\n for (const contentArea of contentByPosition[position]) {\n const contentWidth = getContentWidth(contentArea);\n\n if (contentWidth == null) {\n return null;\n }\n\n if (contentWidth > 0) {\n bandChildWidths.push(contentWidth);\n }\n }\n\n if (position === \"end\") {\n for (const group of groupDefinitions) {\n if (!group.named && activeGroups.has(group.key)) {\n const width = triggerWidths.get(group.key);\n\n if (width == null || width <= 0) {\n return null;\n }\n\n bandChildWidths.push(width);\n }\n }\n }\n\n return sumFlexWidths(bandChildWidths, bandGaps.get(position) ?? 0);\n };\n\n const getTotalWidth = () => {\n if (hasCenteredLayout) {\n const startBandWidth = getBandWidth(\"start\");\n const centerBandWidth = getBandWidth(\"center\");\n const endBandWidth = getBandWidth(\"end\");\n\n if (\n startBandWidth == null ||\n centerBandWidth == null ||\n endBandWidth == null\n ) {\n return null;\n }\n\n return centerBandWidth + Math.max(startBandWidth, endBandWidth) * 2;\n }\n\n const visibleBandWidths: number[] = [];\n\n for (const position of bandPositions) {\n const bandWidth = getBandWidth(position);\n\n if (bandWidth == null) {\n return null;\n }\n\n if (bandWidth > 0) {\n visibleBandWidths.push(bandWidth);\n }\n }\n\n return sumFlexWidths(visibleBandWidths, rootGap);\n };\n\n const initialWidth = getTotalWidth();\n\n if (initialWidth == null) {\n return emptyOverflowState;\n }\n\n if (initialWidth > containerWidth) {\n for (const unit of collapseUnits) {\n for (const itemId of unit.itemIds) {\n overflowedIds.add(itemId);\n }\n\n activeGroups.add(unit.groupKey);\n\n const nextWidth = getTotalWidth();\n\n if (nextWidth == null) {\n return emptyOverflowState;\n }\n\n if (nextWidth <= containerWidth) {\n break;\n }\n }\n }\n\n const overflowGroups = groupDefinitions.reduce<ToolbarNextOverflowGroup[]>(\n (groups, group) => {\n const hiddenItems = items.filter(\n (item) =>\n item.overflowGroupKey === group.key && overflowedIds.has(item.id),\n );\n\n if (hiddenItems.length > 0) {\n groups.push({\n id: group.id,\n items: hiddenItems,\n key: group.key,\n label: group.label,\n named: group.named,\n overflowGroup: group.overflowGroup,\n contentKey: group.contentKey,\n });\n }\n\n return groups;\n },\n [],\n );\n\n return {\n overflowGroups,\n overflowedIds,\n };\n}\n\nexport function useToolbarNextOverflow({\n content,\n}: UseToolbarNextOverflowProps) {\n const targetWindow = useWindow();\n const items = useMemo(\n () => content.flatMap((contentArea) => contentArea.items),\n [content],\n );\n const containerRef = useRef<HTMLDivElement>(null);\n\n const bandRefs = useRef<\n Record<ToolbarContentNextPosition, HTMLDivElement | null>\n >({\n start: null,\n center: null,\n end: null,\n });\n const bandRefCallbacks = useRef(\n new Map<\n ToolbarContentNextPosition,\n (node: HTMLDivElement | null) => void\n >(),\n );\n const contentRefs = useRef<Record<string, HTMLDivElement | null>>({});\n const contentRefCallbacks = useRef(\n new Map<string, (node: HTMLDivElement | null) => void>(),\n );\n const itemRefs = useRef<Record<string, HTMLDivElement | null>>({});\n const itemRefCallbacks = useRef(\n new Map<string, (node: HTMLDivElement | null) => void>(),\n );\n const namedTriggerRefs = useRef<Record<string, HTMLDivElement | null>>({});\n const namedTriggerRefCallbacks = useRef(\n new Map<string, (node: HTMLDivElement | null) => void>(),\n );\n const namedTriggerMeasureRefs = useRef<Record<string, HTMLDivElement | null>>(\n {},\n );\n const namedTriggerMeasureCallbacks = useRef(\n new Map<string, (node: HTMLDivElement | null) => void>(),\n );\n const triggerMeasureRefs = useRef<Record<string, HTMLButtonElement | null>>(\n {},\n );\n const triggerMeasureCallbacks = useRef(\n new Map<string, (node: HTMLButtonElement | null) => void>(),\n );\n const rafRef = useRef<number | null>(null);\n const clearComputingRafRef = useRef<number | null>(null);\n const isComputingRef = useRef(false);\n const pendingMeasureRef = useRef(false);\n const resizeObserverRef = useRef<ResizeObserver | null>(null);\n const observedWidthTargetsRef = useRef(\n new Map<Element, ObservedWidthTarget>(),\n );\n\n const cachedItemWidths = useRef<Record<string, number>>({});\n const cachedNamedTriggerWidths = useRef<Record<string, number>>({});\n const cachedSharedTriggerWidths = useRef<Record<string, number>>({});\n const [overflowState, setOverflowState] =\n useState<OverflowState>(emptyOverflowState);\n\n const namedTriggerItems = useMemo(\n () =>\n items.filter((item) => {\n return item.overflowMode !== \"none\" && item.overflowGroup !== \"shared\";\n }),\n [items],\n );\n\n const groupDefinitions = useMemo(() => buildGroupDefinitions(items), [items]);\n const collapseUnits = useMemo(() => buildCollapseUnits(items), [items]);\n\n const computeOverflow = useCallback((): OverflowState => {\n const container = containerRef.current;\n\n if (!container) {\n return emptyOverflowState;\n }\n\n const containerStyles = ownerWindow(container).getComputedStyle(container);\n const paddingLeft =\n Number.parseFloat(containerStyles.paddingLeft || \"0\") || 0;\n const paddingRight =\n Number.parseFloat(containerStyles.paddingRight || \"0\") || 0;\n const borderLeft =\n Number.parseFloat(containerStyles.borderLeftWidth || \"0\") || 0;\n const borderRight =\n Number.parseFloat(containerStyles.borderRightWidth || \"0\") || 0;\n const containerWidth = Math.floor(\n container.getBoundingClientRect().width -\n paddingLeft -\n paddingRight -\n borderLeft -\n borderRight,\n );\n\n if (containerWidth <= 0) {\n return emptyOverflowState;\n }\n\n const rootGap = readGap(\n containerStyles.columnGap || containerStyles.gap || \"0\",\n );\n const bandGaps = new Map<ToolbarContentNextPosition, number>();\n const contentGaps = new Map<string, number>();\n const itemWidths = new Map<string, number>();\n const namedTriggerWidths = new Map<string, number>();\n const triggerWidths = new Map<string, number>();\n\n for (const position of bandPositions) {\n const bandElement = bandRefs.current[position];\n\n if (!bandElement) {\n bandGaps.set(position, 0);\n continue;\n }\n\n const bandStyles = ownerWindow(bandElement).getComputedStyle(bandElement);\n bandGaps.set(\n position,\n readGap(bandStyles.columnGap || bandStyles.gap || \"0\"),\n );\n }\n\n for (const contentArea of content) {\n const contentElement = contentRefs.current[contentArea.key];\n\n if (!contentElement) {\n return emptyOverflowState;\n }\n\n const contentStyles =\n ownerWindow(contentElement).getComputedStyle(contentElement);\n\n contentGaps.set(\n contentArea.key,\n readGap(contentStyles.columnGap || contentStyles.gap || \"0\"),\n );\n }\n\n for (const item of items) {\n const element = itemRefs.current[item.id];\n\n if (element) {\n const width = measureOverflowItemWidth(element);\n\n if (width > 0) {\n itemWidths.set(item.id, width);\n cachedItemWidths.current[item.id] = width;\n continue;\n }\n }\n\n const cached = cachedItemWidths.current[item.id];\n if (cached != null && cached > 0) {\n itemWidths.set(item.id, cached);\n continue;\n }\n\n return emptyOverflowState;\n }\n\n for (const item of namedTriggerItems) {\n const liveWidth = measureWidth(namedTriggerRefs.current[item.id]);\n\n if (liveWidth > 0) {\n namedTriggerWidths.set(item.id, liveWidth);\n cachedNamedTriggerWidths.current[item.id] = liveWidth;\n continue;\n }\n\n const measureWidthForItem = measureWidth(\n namedTriggerMeasureRefs.current[item.id],\n );\n\n if (measureWidthForItem > 0) {\n namedTriggerWidths.set(item.id, measureWidthForItem);\n cachedNamedTriggerWidths.current[item.id] = measureWidthForItem;\n continue;\n }\n\n const cached = cachedNamedTriggerWidths.current[item.id];\n if (cached != null && cached > 0) {\n namedTriggerWidths.set(item.id, cached);\n continue;\n }\n\n return emptyOverflowState;\n }\n\n for (const group of groupDefinitions.filter((entry) => !entry.named)) {\n const width = measureWidth(triggerMeasureRefs.current[group.key]);\n\n if (width <= 0) {\n const cached = cachedSharedTriggerWidths.current[group.key];\n\n if (cached != null && cached > 0) {\n triggerWidths.set(group.key, cached);\n continue;\n }\n\n return emptyOverflowState;\n }\n\n triggerWidths.set(group.key, width);\n cachedSharedTriggerWidths.current[group.key] = width;\n }\n\n const nextOverflowState = computeToolbarNextOverflowState({\n bandGaps,\n collapseUnits,\n containerWidth,\n groupDefinitions,\n itemWidths,\n items,\n namedTriggerWidths,\n content,\n contentGaps,\n rootGap,\n triggerWidths,\n });\n\n return nextOverflowState;\n }, [collapseUnits, groupDefinitions, items, namedTriggerItems, content]);\n\n const scheduleMeasureRef = useRef<() => void>(() => {});\n\n const scheduleMeasure = useCallback(() => {\n if (!targetWindow) {\n return;\n }\n\n if (isComputingRef.current) {\n pendingMeasureRef.current = true;\n return;\n }\n\n if (rafRef.current != null) {\n targetWindow.cancelAnimationFrame(rafRef.current);\n }\n\n rafRef.current = targetWindow.requestAnimationFrame(() => {\n rafRef.current = null;\n isComputingRef.current = true;\n\n try {\n const nextState = computeOverflow();\n\n setOverflowState((previous) => {\n return areOverflowStatesEqual(previous, nextState)\n ? previous\n : nextState;\n });\n } finally {\n clearComputingRafRef.current = targetWindow.requestAnimationFrame(\n () => {\n clearComputingRafRef.current = null;\n isComputingRef.current = false;\n\n if (pendingMeasureRef.current) {\n pendingMeasureRef.current = false;\n scheduleMeasureRef.current();\n }\n },\n );\n }\n });\n }, [computeOverflow, targetWindow]);\n\n useIsomorphicLayoutEffect(() => {\n scheduleMeasureRef.current = scheduleMeasure;\n\n return () => {\n scheduleMeasureRef.current = () => {};\n };\n }, [scheduleMeasure]);\n\n const getCachedWidthForObservedTarget = useCallback(\n (target: Exclude<ObservedWidthTarget, { kind: \"container\" }>) => {\n switch (target.kind) {\n case \"item\":\n return cachedItemWidths.current[target.id];\n case \"named-trigger\":\n case \"named-trigger-measure\":\n return cachedNamedTriggerWidths.current[target.id];\n case \"shared-trigger-measure\":\n return cachedSharedTriggerWidths.current[target.groupKey];\n }\n },\n [],\n );\n\n const setCachedWidthForObservedTarget = useCallback(\n (\n target: Exclude<ObservedWidthTarget, { kind: \"container\" }>,\n width: number,\n ) => {\n switch (target.kind) {\n case \"item\":\n cachedItemWidths.current[target.id] = width;\n return;\n case \"named-trigger\":\n case \"named-trigger-measure\":\n cachedNamedTriggerWidths.current[target.id] = width;\n return;\n case \"shared-trigger-measure\":\n cachedSharedTriggerWidths.current[target.groupKey] = width;\n return;\n }\n },\n [],\n );\n\n const observeWidthTarget = useCallback(\n (node: Element | null, target: ObservedWidthTarget) => {\n if (!node) {\n return;\n }\n\n observedWidthTargetsRef.current.set(node, target);\n resizeObserverRef.current?.observe(node);\n },\n [],\n );\n\n const unobserveWidthTarget = useCallback((node: Element | null) => {\n if (!node) {\n return;\n }\n\n observedWidthTargetsRef.current.delete(node);\n resizeObserverRef.current?.unobserve(node);\n }, []);\n\n const updateObservedNode = useCallback(\n <TElement extends Element>(\n nodes: Record<string, TElement | null>,\n key: string,\n node: TElement | null,\n target: ObservedWidthTarget,\n ) => {\n const previous = nodes[key];\n\n if (previous === node) {\n return;\n }\n\n if (previous) {\n unobserveWidthTarget(previous);\n }\n\n nodes[key] = node;\n\n if (node) {\n observeWidthTarget(node, target);\n }\n },\n [observeWidthTarget, unobserveWidthTarget],\n );\n\n useIsomorphicLayoutEffect(() => {\n scheduleMeasure();\n }, [scheduleMeasure]);\n\n useEffect(() => {\n const container = containerRef.current;\n\n if (!container) {\n return;\n }\n\n let cancelled = false;\n const win = ownerWindow(container);\n const resizeObserver = new win.ResizeObserver((entries) => {\n let shouldMeasure = false;\n\n for (const entry of entries) {\n const target = observedWidthTargetsRef.current.get(entry.target);\n\n if (!target) {\n continue;\n }\n\n if (target.kind === \"container\") {\n shouldMeasure = true;\n continue;\n }\n\n const nextWidth =\n target.kind === \"item\"\n ? measureOverflowItemWidth(entry.target as HTMLElement)\n : measureWidth(entry.target as HTMLElement);\n\n if (nextWidth <= 0) {\n continue;\n }\n\n const previousWidth = getCachedWidthForObservedTarget(target);\n\n if (previousWidth !== nextWidth) {\n setCachedWidthForObservedTarget(target, nextWidth);\n shouldMeasure = true;\n }\n }\n\n if (shouldMeasure) {\n scheduleMeasureRef.current();\n }\n });\n\n resizeObserverRef.current = resizeObserver;\n observeWidthTarget(container, { kind: \"container\" });\n\n for (const node of observedWidthTargetsRef.current.keys()) {\n resizeObserver.observe(node);\n }\n\n if (win.document.fonts) {\n void win.document.fonts.ready.then(() => {\n if (!cancelled) {\n scheduleMeasureRef.current();\n }\n });\n }\n\n return () => {\n cancelled = true;\n resizeObserverRef.current = null;\n resizeObserver.disconnect();\n\n if (rafRef.current != null) {\n win.cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n\n if (clearComputingRafRef.current != null) {\n win.cancelAnimationFrame(clearComputingRafRef.current);\n clearComputingRafRef.current = null;\n }\n\n isComputingRef.current = false;\n pendingMeasureRef.current = false;\n };\n }, [\n getCachedWidthForObservedTarget,\n observeWidthTarget,\n setCachedWidthForObservedTarget,\n ]);\n\n const getItemRef = useCallback(\n (id: string) => {\n const existing = itemRefCallbacks.current.get(id);\n\n if (existing) {\n return existing;\n }\n\n const callback = (node: HTMLDivElement | null) => {\n updateObservedNode(itemRefs.current, id, node, {\n id,\n kind: \"item\",\n });\n };\n\n itemRefCallbacks.current.set(id, callback);\n return callback;\n },\n [updateObservedNode],\n );\n\n const getNamedTriggerRef = useCallback(\n (id: string) => {\n const existing = namedTriggerRefCallbacks.current.get(id);\n\n if (existing) {\n return existing;\n }\n\n const callback = (node: HTMLDivElement | null) => {\n updateObservedNode(namedTriggerRefs.current, id, node, {\n id,\n kind: \"named-trigger\",\n });\n };\n\n namedTriggerRefCallbacks.current.set(id, callback);\n return callback;\n },\n [updateObservedNode],\n );\n\n const getNamedTriggerMeasureRef = useCallback(\n (id: string) => {\n const existing = namedTriggerMeasureCallbacks.current.get(id);\n\n if (existing) {\n return existing;\n }\n\n const callback = (node: HTMLDivElement | null) => {\n updateObservedNode(namedTriggerMeasureRefs.current, id, node, {\n id,\n kind: \"named-trigger-measure\",\n });\n };\n\n namedTriggerMeasureCallbacks.current.set(id, callback);\n return callback;\n },\n [updateObservedNode],\n );\n\n const getContentRef = useCallback((contentKey: string) => {\n const existing = contentRefCallbacks.current.get(contentKey);\n\n if (existing) {\n return existing;\n }\n\n const callback = (node: HTMLDivElement | null) => {\n contentRefs.current[contentKey] = node;\n };\n\n contentRefCallbacks.current.set(contentKey, callback);\n return callback;\n }, []);\n const getBandRef = useCallback((position: ToolbarContentNextPosition) => {\n const existing = bandRefCallbacks.current.get(position);\n\n if (existing) {\n return existing;\n }\n\n const callback = (node: HTMLDivElement | null) => {\n bandRefs.current[position] = node;\n };\n\n bandRefCallbacks.current.set(position, callback);\n return callback;\n }, []);\n\n const getTriggerMeasureRef = useCallback(\n (groupKey: string) => {\n const existing = triggerMeasureCallbacks.current.get(groupKey);\n\n if (existing) {\n return existing;\n }\n\n const callback = (node: HTMLButtonElement | null) => {\n updateObservedNode(triggerMeasureRefs.current, groupKey, node, {\n groupKey,\n kind: \"shared-trigger-measure\",\n });\n };\n\n triggerMeasureCallbacks.current.set(groupKey, callback);\n return callback;\n },\n [updateObservedNode],\n );\n\n return {\n containerRef,\n getBandRef,\n getItemRef,\n getNamedTriggerMeasureRef,\n getNamedTriggerRef,\n getContentRef,\n getTriggerMeasureRef,\n isOverflowing: overflowState.overflowGroups.length > 0,\n overflowGroups: overflowState.overflowGroups,\n overflowedIds: overflowState.overflowedIds,\n overflowTriggerGroups: groupDefinitions,\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useToolbarNextOverflow.js","sources":["../src/toolbar-next/useToolbarNextOverflow.ts"],"sourcesContent":["import { ownerWindow, useIsomorphicLayoutEffect } from \"@salt-ds/core\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport type { ToolbarContentNextPosition } from \"./ToolbarContentNext\";\nimport {\n buildContentOverflowRenderSlots,\n type ToolbarNextContentModel,\n type ToolbarNextOverflowItem,\n} from \"./toolbarNextUtils\";\n\ninterface OverflowGroupDefinition {\n id: string;\n key: string;\n label: string;\n named: boolean;\n order: number;\n overflowGroup: string;\n contentKey?: string;\n}\n\ninterface CollapseUnit {\n groupKey: string;\n itemIds: string[];\n order: number;\n priority: number;\n}\n\nexport interface ToolbarNextOverflowGroup {\n id: string;\n items: ToolbarNextOverflowItem[];\n key: string;\n label: string;\n named: boolean;\n overflowGroup: string;\n contentKey?: string;\n}\n\ninterface OverflowState {\n overflowGroups: ToolbarNextOverflowGroup[];\n overflowedIds: Set<string>;\n}\n\ninterface UseToolbarNextOverflowProps {\n content: ToolbarNextContentModel[];\n}\n\ntype ObservedWidthTarget =\n | {\n kind: \"container\";\n }\n | {\n id: string;\n kind: \"item\";\n }\n | {\n id: string;\n kind: \"named-trigger\";\n }\n | {\n id: string;\n kind: \"named-trigger-measure\";\n }\n | {\n groupKey: string;\n kind: \"shared-trigger-measure\";\n };\n\nconst emptyOverflowState: OverflowState = {\n overflowGroups: [],\n overflowedIds: new Set<string>(),\n};\n\nconst bandPositions: ToolbarContentNextPosition[] = [\"start\", \"center\", \"end\"];\n// Tolerance for comparing measured content against the available width.\n// `getBoundingClientRect` reports fractional pixels, so summed item, gap, and\n// container measurements can differ by sub-pixel amounts that never visibly\n// overflow. Treating differences below half a CSS pixel as \"fits\" prevents\n// false overflow. Matches the epsilon used by core Tabs for consistency.\nconst WIDTH_EPSILON = 0.5;\n\nfunction measureWidth(element: HTMLElement | null) {\n if (!element) {\n return 0;\n }\n\n const { width } = element.getBoundingClientRect();\n return width;\n}\n\nfunction isVisibleMeasurementElement(element: Element): element is HTMLElement {\n if (!(element instanceof HTMLElement)) {\n return false;\n }\n\n const { width, height } = element.getBoundingClientRect();\n const styles = ownerWindow(element).getComputedStyle(element);\n\n return (\n width > 0 &&\n height > 0 &&\n styles.display !== \"none\" &&\n styles.visibility !== \"hidden\"\n );\n}\n\nfunction measureOverflowItemWidth(element: HTMLElement | null) {\n if (!element) {\n return 0;\n }\n\n const rect = element.getBoundingClientRect();\n let left = rect.left;\n let right = rect.right;\n\n for (const descendant of element.querySelectorAll(\"*\")) {\n if (!isVisibleMeasurementElement(descendant)) {\n continue;\n }\n\n const descendantRect = descendant.getBoundingClientRect();\n left = Math.min(left, descendantRect.left);\n right = Math.max(right, descendantRect.right);\n }\n\n return Math.max(rect.width, right - left);\n}\n\nfunction exceedsAvailableWidth(measuredWidth: number, availableWidth: number) {\n return measuredWidth - availableWidth > WIDTH_EPSILON;\n}\n\nfunction readGap(gapValue: string) {\n return Number.parseFloat(gapValue || \"0\") || 0;\n}\n\nfunction sumFlexWidths(widths: number[], gap: number) {\n if (widths.length === 0) {\n return 0;\n }\n\n return (\n widths.reduce((total, width) => total + width, 0) +\n gap * (widths.length - 1)\n );\n}\n\nfunction buildGroupDefinitions(items: ToolbarNextOverflowItem[]) {\n const groupMap = new Map<string, OverflowGroupDefinition>();\n\n for (const [sequence, item] of items.entries()) {\n if (item.overflowMode === \"none\") {\n continue;\n }\n\n const existing = groupMap.get(item.overflowGroupKey);\n\n if (existing) {\n if (!existing.named && item.overflowGroup === \"shared\") {\n continue;\n }\n\n if (existing.label === item.overflowGroup && item.overflowLabel) {\n existing.label = item.overflowLabel;\n }\n\n continue;\n }\n\n groupMap.set(item.overflowGroupKey, {\n id: `${item.overflowGroupKey}-${sequence}`,\n key: item.overflowGroupKey,\n label:\n item.overflowGroup === \"shared\"\n ? \"More\"\n : (item.overflowLabel ?? item.overflowGroup),\n named: item.overflowGroup !== \"shared\",\n order: sequence,\n overflowGroup: item.overflowGroup,\n contentKey: item.overflowGroup === \"shared\" ? undefined : item.contentKey,\n });\n }\n\n return Array.from(groupMap.values()).sort(\n (left, right) => left.order - right.order,\n );\n}\n\nfunction buildCollapseUnits(items: ToolbarNextOverflowItem[]) {\n const groupedUnits = new Map<string, CollapseUnit>();\n const units: CollapseUnit[] = [];\n\n for (const [sequence, item] of items.entries()) {\n if (item.overflowMode === \"none\") {\n continue;\n }\n\n if (item.overflowMode === \"grouped\" && item.overflowGroup !== \"shared\") {\n const existing = groupedUnits.get(item.overflowGroupKey);\n\n if (existing) {\n existing.itemIds.push(item.id);\n existing.order = Math.max(existing.order, sequence);\n existing.priority = Math.max(existing.priority, item.overflowPriority);\n continue;\n }\n\n const unit: CollapseUnit = {\n groupKey: item.overflowGroupKey,\n itemIds: [item.id],\n order: sequence,\n priority: item.overflowPriority,\n };\n\n groupedUnits.set(item.overflowGroupKey, unit);\n units.push(unit);\n continue;\n }\n\n units.push({\n groupKey: item.overflowGroupKey,\n itemIds: [item.id],\n order: sequence,\n priority: item.overflowPriority,\n });\n }\n\n return units.sort((left, right) => {\n if (left.priority !== right.priority) {\n return right.priority - left.priority;\n }\n\n return right.order - left.order;\n });\n}\n\nfunction areOverflowStatesEqual(previous: OverflowState, next: OverflowState) {\n if (previous.overflowedIds.size !== next.overflowedIds.size) {\n return false;\n }\n\n for (const itemId of previous.overflowedIds) {\n if (!next.overflowedIds.has(itemId)) {\n return false;\n }\n }\n\n if (previous.overflowGroups.length !== next.overflowGroups.length) {\n return false;\n }\n\n return previous.overflowGroups.every((group, index) => {\n const nextGroup = next.overflowGroups[index];\n\n if (\n nextGroup == null ||\n group.id !== nextGroup.id ||\n group.label !== nextGroup.label ||\n group.items.length !== nextGroup.items.length\n ) {\n return false;\n }\n\n return group.items.every((item, itemIndex) => {\n return item.id === nextGroup.items[itemIndex]?.id;\n });\n });\n}\n\ninterface ComputeToolbarNextOverflowStateArgs {\n collapseUnits: CollapseUnit[];\n containerWidth: number;\n groupDefinitions: OverflowGroupDefinition[];\n itemWidths: Map<string, number>;\n items: ToolbarNextOverflowItem[];\n namedTriggerWidths: Map<string, number>;\n content: ToolbarNextContentModel[];\n contentGaps: Map<string, number>;\n rootGap: number;\n triggerWidths: Map<string, number>;\n bandGaps: Map<ToolbarContentNextPosition, number>;\n}\n\nfunction computeToolbarNextOverflowState({\n bandGaps,\n collapseUnits,\n containerWidth,\n groupDefinitions,\n itemWidths,\n items,\n namedTriggerWidths,\n content,\n contentGaps,\n rootGap,\n triggerWidths,\n}: ComputeToolbarNextOverflowStateArgs): OverflowState {\n const hasCenteredLayout = content.some(\n (contentArea) => contentArea.position === \"center\",\n );\n const contentByPosition = bandPositions.reduce<\n Record<ToolbarContentNextPosition, ToolbarNextContentModel[]>\n >(\n (bands, position) => {\n bands[position] = content.filter(\n (contentArea) => contentArea.position === position,\n );\n return bands;\n },\n {\n start: [],\n center: [],\n end: [],\n },\n );\n const overflowedIds = new Set<string>();\n const activeGroups = new Set<string>();\n\n const getContentWidth = (contentArea: ToolbarNextContentModel) => {\n const renderSlots = buildContentOverflowRenderSlots(\n contentArea.items,\n overflowedIds,\n new Set(\n groupDefinitions\n .filter((group) => {\n return (\n group.named &&\n group.contentKey === contentArea.key &&\n activeGroups.has(group.key)\n );\n })\n .map((group) => group.key),\n ),\n );\n const slotWidths: number[] = [];\n\n for (const slot of renderSlots) {\n const width =\n slot.triggerGroupKey != null\n ? namedTriggerWidths.get(slot.item.id)\n : itemWidths.get(slot.item.id);\n\n if (width == null || width <= 0) {\n return null;\n }\n\n slotWidths.push(width);\n }\n\n return sumFlexWidths(slotWidths, contentGaps.get(contentArea.key) ?? 0);\n };\n\n const getBandWidth = (position: ToolbarContentNextPosition) => {\n const bandChildWidths: number[] = [];\n\n for (const contentArea of contentByPosition[position]) {\n const contentWidth = getContentWidth(contentArea);\n\n if (contentWidth == null) {\n return null;\n }\n\n if (contentWidth > 0) {\n bandChildWidths.push(contentWidth);\n }\n }\n\n if (position === \"end\") {\n for (const group of groupDefinitions) {\n if (!group.named && activeGroups.has(group.key)) {\n const width = triggerWidths.get(group.key);\n\n if (width == null || width <= 0) {\n return null;\n }\n\n bandChildWidths.push(width);\n }\n }\n }\n\n return sumFlexWidths(bandChildWidths, bandGaps.get(position) ?? 0);\n };\n\n const getTotalWidth = () => {\n if (hasCenteredLayout) {\n const startBandWidth = getBandWidth(\"start\");\n const centerBandWidth = getBandWidth(\"center\");\n const endBandWidth = getBandWidth(\"end\");\n\n if (\n startBandWidth == null ||\n centerBandWidth == null ||\n endBandWidth == null\n ) {\n return null;\n }\n\n return centerBandWidth + Math.max(startBandWidth, endBandWidth) * 2;\n }\n\n const visibleBandWidths: number[] = [];\n\n for (const position of bandPositions) {\n const bandWidth = getBandWidth(position);\n\n if (bandWidth == null) {\n return null;\n }\n\n if (bandWidth > 0) {\n visibleBandWidths.push(bandWidth);\n }\n }\n\n return sumFlexWidths(visibleBandWidths, rootGap);\n };\n\n const initialWidth = getTotalWidth();\n\n if (initialWidth == null) {\n return emptyOverflowState;\n }\n\n if (exceedsAvailableWidth(initialWidth, containerWidth)) {\n for (const unit of collapseUnits) {\n for (const itemId of unit.itemIds) {\n overflowedIds.add(itemId);\n }\n\n activeGroups.add(unit.groupKey);\n\n const nextWidth = getTotalWidth();\n\n if (nextWidth == null) {\n return emptyOverflowState;\n }\n\n if (!exceedsAvailableWidth(nextWidth, containerWidth)) {\n break;\n }\n }\n }\n\n const overflowGroups = groupDefinitions.reduce<ToolbarNextOverflowGroup[]>(\n (groups, group) => {\n const hiddenItems = items.filter(\n (item) =>\n item.overflowGroupKey === group.key && overflowedIds.has(item.id),\n );\n\n if (hiddenItems.length > 0) {\n groups.push({\n id: group.id,\n items: hiddenItems,\n key: group.key,\n label: group.label,\n named: group.named,\n overflowGroup: group.overflowGroup,\n contentKey: group.contentKey,\n });\n }\n\n return groups;\n },\n [],\n );\n\n return {\n overflowGroups,\n overflowedIds,\n };\n}\n\nexport function useToolbarNextOverflow({\n content,\n}: UseToolbarNextOverflowProps) {\n const targetWindow = useWindow();\n const items = useMemo(\n () => content.flatMap((contentArea) => contentArea.items),\n [content],\n );\n const containerRef = useRef<HTMLDivElement>(null);\n\n const bandRefs = useRef<\n Record<ToolbarContentNextPosition, HTMLDivElement | null>\n >({\n start: null,\n center: null,\n end: null,\n });\n const bandRefCallbacks = useRef(\n new Map<\n ToolbarContentNextPosition,\n (node: HTMLDivElement | null) => void\n >(),\n );\n const contentRefs = useRef<Record<string, HTMLDivElement | null>>({});\n const contentRefCallbacks = useRef(\n new Map<string, (node: HTMLDivElement | null) => void>(),\n );\n const itemRefs = useRef<Record<string, HTMLDivElement | null>>({});\n const itemRefCallbacks = useRef(\n new Map<string, (node: HTMLDivElement | null) => void>(),\n );\n const namedTriggerRefs = useRef<Record<string, HTMLDivElement | null>>({});\n const namedTriggerRefCallbacks = useRef(\n new Map<string, (node: HTMLDivElement | null) => void>(),\n );\n const namedTriggerMeasureRefs = useRef<Record<string, HTMLDivElement | null>>(\n {},\n );\n const namedTriggerMeasureCallbacks = useRef(\n new Map<string, (node: HTMLDivElement | null) => void>(),\n );\n const triggerMeasureRefs = useRef<Record<string, HTMLButtonElement | null>>(\n {},\n );\n const triggerMeasureCallbacks = useRef(\n new Map<string, (node: HTMLButtonElement | null) => void>(),\n );\n const rafRef = useRef<number | null>(null);\n const clearComputingRafRef = useRef<number | null>(null);\n const isComputingRef = useRef(false);\n const pendingMeasureRef = useRef(false);\n const resizeObserverRef = useRef<ResizeObserver | null>(null);\n const observedWidthTargetsRef = useRef(\n new Map<Element, ObservedWidthTarget>(),\n );\n\n const cachedItemWidths = useRef<Record<string, number>>({});\n const cachedNamedTriggerWidths = useRef<Record<string, number>>({});\n const cachedSharedTriggerWidths = useRef<Record<string, number>>({});\n const [overflowState, setOverflowState] =\n useState<OverflowState>(emptyOverflowState);\n\n const namedTriggerItems = useMemo(\n () =>\n items.filter((item) => {\n return item.overflowMode !== \"none\" && item.overflowGroup !== \"shared\";\n }),\n [items],\n );\n\n const groupDefinitions = useMemo(() => buildGroupDefinitions(items), [items]);\n const collapseUnits = useMemo(() => buildCollapseUnits(items), [items]);\n\n const computeOverflow = useCallback((): OverflowState => {\n const container = containerRef.current;\n\n if (!container) {\n return emptyOverflowState;\n }\n\n const containerStyles = ownerWindow(container).getComputedStyle(container);\n const paddingLeft =\n Number.parseFloat(containerStyles.paddingLeft || \"0\") || 0;\n const paddingRight =\n Number.parseFloat(containerStyles.paddingRight || \"0\") || 0;\n const borderLeft =\n Number.parseFloat(containerStyles.borderLeftWidth || \"0\") || 0;\n const borderRight =\n Number.parseFloat(containerStyles.borderRightWidth || \"0\") || 0;\n const containerWidth =\n container.getBoundingClientRect().width -\n paddingLeft -\n paddingRight -\n borderLeft -\n borderRight;\n\n if (containerWidth <= 0) {\n return emptyOverflowState;\n }\n\n const rootGap = readGap(\n containerStyles.columnGap || containerStyles.gap || \"0\",\n );\n const bandGaps = new Map<ToolbarContentNextPosition, number>();\n const contentGaps = new Map<string, number>();\n const itemWidths = new Map<string, number>();\n const namedTriggerWidths = new Map<string, number>();\n const triggerWidths = new Map<string, number>();\n\n for (const position of bandPositions) {\n const bandElement = bandRefs.current[position];\n\n if (!bandElement) {\n bandGaps.set(position, 0);\n continue;\n }\n\n const bandStyles = ownerWindow(bandElement).getComputedStyle(bandElement);\n bandGaps.set(\n position,\n readGap(bandStyles.columnGap || bandStyles.gap || \"0\"),\n );\n }\n\n for (const contentArea of content) {\n const contentElement = contentRefs.current[contentArea.key];\n\n if (!contentElement) {\n return emptyOverflowState;\n }\n\n const contentStyles =\n ownerWindow(contentElement).getComputedStyle(contentElement);\n\n contentGaps.set(\n contentArea.key,\n readGap(contentStyles.columnGap || contentStyles.gap || \"0\"),\n );\n }\n\n for (const item of items) {\n const element = itemRefs.current[item.id];\n\n if (element) {\n const width = measureOverflowItemWidth(element);\n\n if (width > 0) {\n itemWidths.set(item.id, width);\n cachedItemWidths.current[item.id] = width;\n continue;\n }\n }\n\n const cached = cachedItemWidths.current[item.id];\n if (cached != null && cached > 0) {\n itemWidths.set(item.id, cached);\n continue;\n }\n\n return emptyOverflowState;\n }\n\n for (const item of namedTriggerItems) {\n const liveWidth = measureWidth(namedTriggerRefs.current[item.id]);\n\n if (liveWidth > 0) {\n namedTriggerWidths.set(item.id, liveWidth);\n cachedNamedTriggerWidths.current[item.id] = liveWidth;\n continue;\n }\n\n const measureWidthForItem = measureWidth(\n namedTriggerMeasureRefs.current[item.id],\n );\n\n if (measureWidthForItem > 0) {\n namedTriggerWidths.set(item.id, measureWidthForItem);\n cachedNamedTriggerWidths.current[item.id] = measureWidthForItem;\n continue;\n }\n\n const cached = cachedNamedTriggerWidths.current[item.id];\n if (cached != null && cached > 0) {\n namedTriggerWidths.set(item.id, cached);\n continue;\n }\n\n return emptyOverflowState;\n }\n\n for (const group of groupDefinitions.filter((entry) => !entry.named)) {\n const width = measureWidth(triggerMeasureRefs.current[group.key]);\n\n if (width <= 0) {\n const cached = cachedSharedTriggerWidths.current[group.key];\n\n if (cached != null && cached > 0) {\n triggerWidths.set(group.key, cached);\n continue;\n }\n\n return emptyOverflowState;\n }\n\n triggerWidths.set(group.key, width);\n cachedSharedTriggerWidths.current[group.key] = width;\n }\n\n const nextOverflowState = computeToolbarNextOverflowState({\n bandGaps,\n collapseUnits,\n containerWidth,\n groupDefinitions,\n itemWidths,\n items,\n namedTriggerWidths,\n content,\n contentGaps,\n rootGap,\n triggerWidths,\n });\n\n return nextOverflowState;\n }, [collapseUnits, groupDefinitions, items, namedTriggerItems, content]);\n\n const scheduleMeasureRef = useRef<() => void>(() => {});\n\n const scheduleMeasure = useCallback(() => {\n if (!targetWindow) {\n return;\n }\n\n if (isComputingRef.current) {\n pendingMeasureRef.current = true;\n return;\n }\n\n if (rafRef.current != null) {\n targetWindow.cancelAnimationFrame(rafRef.current);\n }\n\n rafRef.current = targetWindow.requestAnimationFrame(() => {\n rafRef.current = null;\n isComputingRef.current = true;\n\n try {\n const nextState = computeOverflow();\n\n setOverflowState((previous) => {\n return areOverflowStatesEqual(previous, nextState)\n ? previous\n : nextState;\n });\n } finally {\n clearComputingRafRef.current = targetWindow.requestAnimationFrame(\n () => {\n clearComputingRafRef.current = null;\n isComputingRef.current = false;\n\n if (pendingMeasureRef.current) {\n pendingMeasureRef.current = false;\n scheduleMeasureRef.current();\n }\n },\n );\n }\n });\n }, [computeOverflow, targetWindow]);\n\n useIsomorphicLayoutEffect(() => {\n scheduleMeasureRef.current = scheduleMeasure;\n\n return () => {\n scheduleMeasureRef.current = () => {};\n };\n }, [scheduleMeasure]);\n\n const getCachedWidthForObservedTarget = useCallback(\n (target: Exclude<ObservedWidthTarget, { kind: \"container\" }>) => {\n switch (target.kind) {\n case \"item\":\n return cachedItemWidths.current[target.id];\n case \"named-trigger\":\n case \"named-trigger-measure\":\n return cachedNamedTriggerWidths.current[target.id];\n case \"shared-trigger-measure\":\n return cachedSharedTriggerWidths.current[target.groupKey];\n }\n },\n [],\n );\n\n const setCachedWidthForObservedTarget = useCallback(\n (\n target: Exclude<ObservedWidthTarget, { kind: \"container\" }>,\n width: number,\n ) => {\n switch (target.kind) {\n case \"item\":\n cachedItemWidths.current[target.id] = width;\n return;\n case \"named-trigger\":\n case \"named-trigger-measure\":\n cachedNamedTriggerWidths.current[target.id] = width;\n return;\n case \"shared-trigger-measure\":\n cachedSharedTriggerWidths.current[target.groupKey] = width;\n return;\n }\n },\n [],\n );\n\n const observeWidthTarget = useCallback(\n (node: Element | null, target: ObservedWidthTarget) => {\n if (!node) {\n return;\n }\n\n observedWidthTargetsRef.current.set(node, target);\n resizeObserverRef.current?.observe(node);\n },\n [],\n );\n\n const unobserveWidthTarget = useCallback((node: Element | null) => {\n if (!node) {\n return;\n }\n\n observedWidthTargetsRef.current.delete(node);\n resizeObserverRef.current?.unobserve(node);\n }, []);\n\n const updateObservedNode = useCallback(\n <TElement extends Element>(\n nodes: Record<string, TElement | null>,\n key: string,\n node: TElement | null,\n target: ObservedWidthTarget,\n ) => {\n const previous = nodes[key];\n\n if (previous === node) {\n return;\n }\n\n if (previous) {\n unobserveWidthTarget(previous);\n }\n\n nodes[key] = node;\n\n if (node) {\n observeWidthTarget(node, target);\n }\n },\n [observeWidthTarget, unobserveWidthTarget],\n );\n\n useIsomorphicLayoutEffect(() => {\n scheduleMeasure();\n }, [scheduleMeasure]);\n\n useEffect(() => {\n const container = containerRef.current;\n\n if (!container) {\n return;\n }\n\n let cancelled = false;\n const win = ownerWindow(container);\n const resizeObserver = new win.ResizeObserver((entries) => {\n let shouldMeasure = false;\n\n for (const entry of entries) {\n const target = observedWidthTargetsRef.current.get(entry.target);\n\n if (!target) {\n continue;\n }\n\n if (target.kind === \"container\") {\n shouldMeasure = true;\n continue;\n }\n\n const nextWidth =\n target.kind === \"item\"\n ? measureOverflowItemWidth(entry.target as HTMLElement)\n : measureWidth(entry.target as HTMLElement);\n\n if (nextWidth <= 0) {\n continue;\n }\n\n const previousWidth = getCachedWidthForObservedTarget(target);\n\n if (previousWidth !== nextWidth) {\n setCachedWidthForObservedTarget(target, nextWidth);\n shouldMeasure = true;\n }\n }\n\n if (shouldMeasure) {\n scheduleMeasureRef.current();\n }\n });\n\n resizeObserverRef.current = resizeObserver;\n observeWidthTarget(container, { kind: \"container\" });\n\n for (const node of observedWidthTargetsRef.current.keys()) {\n resizeObserver.observe(node);\n }\n\n if (win.document.fonts) {\n void win.document.fonts.ready.then(() => {\n if (!cancelled) {\n scheduleMeasureRef.current();\n }\n });\n }\n\n return () => {\n cancelled = true;\n resizeObserverRef.current = null;\n resizeObserver.disconnect();\n\n if (rafRef.current != null) {\n win.cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n\n if (clearComputingRafRef.current != null) {\n win.cancelAnimationFrame(clearComputingRafRef.current);\n clearComputingRafRef.current = null;\n }\n\n isComputingRef.current = false;\n pendingMeasureRef.current = false;\n };\n }, [\n getCachedWidthForObservedTarget,\n observeWidthTarget,\n setCachedWidthForObservedTarget,\n ]);\n\n const getItemRef = useCallback(\n (id: string) => {\n const existing = itemRefCallbacks.current.get(id);\n\n if (existing) {\n return existing;\n }\n\n const callback = (node: HTMLDivElement | null) => {\n updateObservedNode(itemRefs.current, id, node, {\n id,\n kind: \"item\",\n });\n };\n\n itemRefCallbacks.current.set(id, callback);\n return callback;\n },\n [updateObservedNode],\n );\n\n const getNamedTriggerRef = useCallback(\n (id: string) => {\n const existing = namedTriggerRefCallbacks.current.get(id);\n\n if (existing) {\n return existing;\n }\n\n const callback = (node: HTMLDivElement | null) => {\n updateObservedNode(namedTriggerRefs.current, id, node, {\n id,\n kind: \"named-trigger\",\n });\n };\n\n namedTriggerRefCallbacks.current.set(id, callback);\n return callback;\n },\n [updateObservedNode],\n );\n\n const getNamedTriggerMeasureRef = useCallback(\n (id: string) => {\n const existing = namedTriggerMeasureCallbacks.current.get(id);\n\n if (existing) {\n return existing;\n }\n\n const callback = (node: HTMLDivElement | null) => {\n updateObservedNode(namedTriggerMeasureRefs.current, id, node, {\n id,\n kind: \"named-trigger-measure\",\n });\n };\n\n namedTriggerMeasureCallbacks.current.set(id, callback);\n return callback;\n },\n [updateObservedNode],\n );\n\n const getContentRef = useCallback((contentKey: string) => {\n const existing = contentRefCallbacks.current.get(contentKey);\n\n if (existing) {\n return existing;\n }\n\n const callback = (node: HTMLDivElement | null) => {\n contentRefs.current[contentKey] = node;\n };\n\n contentRefCallbacks.current.set(contentKey, callback);\n return callback;\n }, []);\n const getBandRef = useCallback((position: ToolbarContentNextPosition) => {\n const existing = bandRefCallbacks.current.get(position);\n\n if (existing) {\n return existing;\n }\n\n const callback = (node: HTMLDivElement | null) => {\n bandRefs.current[position] = node;\n };\n\n bandRefCallbacks.current.set(position, callback);\n return callback;\n }, []);\n\n const getTriggerMeasureRef = useCallback(\n (groupKey: string) => {\n const existing = triggerMeasureCallbacks.current.get(groupKey);\n\n if (existing) {\n return existing;\n }\n\n const callback = (node: HTMLButtonElement | null) => {\n updateObservedNode(triggerMeasureRefs.current, groupKey, node, {\n groupKey,\n kind: \"shared-trigger-measure\",\n });\n };\n\n triggerMeasureCallbacks.current.set(groupKey, callback);\n return callback;\n },\n [updateObservedNode],\n );\n\n return {\n containerRef,\n getBandRef,\n getItemRef,\n getNamedTriggerMeasureRef,\n getNamedTriggerRef,\n getContentRef,\n getTriggerMeasureRef,\n isOverflowing: overflowState.overflowGroups.length > 0,\n overflowGroups: overflowState.overflowGroups,\n overflowedIds: overflowState.overflowedIds,\n overflowTriggerGroups: groupDefinitions,\n };\n}\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,8 @@
1
- import { type Placement } from "@floating-ui/react";
2
1
  import { type ReactNode } from "react";
2
+ /**
3
+ * Supported placements for the mega menu panel.
4
+ */
5
+ export type MegaMenuPlacement = "bottom" | "bottom-start" | "bottom-end";
3
6
  export interface MegaMenuProps {
4
7
  /**
5
8
  * The content of the mega menu, typically `MegaMenuTrigger` and `MegaMenuPanel`.
@@ -22,6 +25,12 @@ export interface MegaMenuProps {
22
25
  * The placement of the mega menu panel relative to the trigger.
23
26
  * @default "bottom"
24
27
  */
25
- placement?: Placement;
28
+ placement?: MegaMenuPlacement;
26
29
  }
30
+ /**
31
+ * Root of a mega menu, coordinating its trigger and panel.
32
+ *
33
+ * Not intended to be nested inside another floating overlay (e.g. a dialog or
34
+ * popover): the mega menu does not participate in floating-ui's `FloatingTree`
35
+ */
27
36
  export declare function MegaMenu({ children, open, defaultOpen, onOpenChange, placement, }: MegaMenuProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { type ComponentPropsWithoutRef, type ReactNode } from "react";
2
+ export interface MegaMenuActionsProps extends ComponentPropsWithoutRef<"div"> {
3
+ /**
4
+ * The content of the actions. Place `MegaMenuActions` inside
5
+ * `MegaMenuContent`, after `MegaMenuGroups`; it renders as a band beneath the
6
+ * groups, spanning their width.
7
+ */
8
+ children?: ReactNode;
9
+ }
10
+ export declare const MegaMenuActions: import("react").ForwardRefExoticComponent<MegaMenuActionsProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,9 @@
1
+ import { type ComponentPropsWithoutRef, type ReactNode } from "react";
2
+ export interface MegaMenuAsideProps extends ComponentPropsWithoutRef<"aside"> {
3
+ /**
4
+ * The content. Renders to the left of `MegaMenuContent` when placed before
5
+ * it, and to the right when placed after.
6
+ */
7
+ children?: ReactNode;
8
+ }
9
+ export declare const MegaMenuAside: import("react").ForwardRefExoticComponent<MegaMenuAsideProps & import("react").RefAttributes<HTMLElement>>;
@@ -0,0 +1,9 @@
1
+ import { type ComponentPropsWithoutRef, type ReactNode } from "react";
2
+ export interface MegaMenuContentProps extends ComponentPropsWithoutRef<"div"> {
3
+ /**
4
+ * The content of the mega menu navigation area, typically a `MegaMenuGroups`
5
+ * and an optional `MegaMenuActions`.
6
+ */
7
+ children?: ReactNode;
8
+ }
9
+ export declare const MegaMenuContent: import("react").ForwardRefExoticComponent<MegaMenuContentProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,5 +1,6 @@
1
- import type { FloatingRootContext, Placement } from "@floating-ui/react";
2
- import type { Dispatch, HTMLProps, SetStateAction } from "react";
1
+ import type { FloatingRootContext } from "@floating-ui/react";
2
+ import type { Dispatch, HTMLProps, MutableRefObject, SetStateAction } from "react";
3
+ import type { MegaMenuPlacement } from "./MegaMenu";
3
4
  export interface MegaMenuContextValue {
4
5
  /** Whether the mega menu is currently open. */
5
6
  openState: boolean;
@@ -8,7 +9,7 @@ export interface MegaMenuContextValue {
8
9
  /** The floating-ui root context for coordinating interactions. */
9
10
  floatingRootContext: FloatingRootContext;
10
11
  /** The placement of the mega menu panel relative to the trigger. */
11
- placement: Placement;
12
+ placement: MegaMenuPlacement;
12
13
  /** Props getter for the trigger (reference) element. Merges floating-ui interaction props with user props. */
13
14
  getReferenceProps: (userProps?: HTMLProps<Element> | undefined) => Record<string, unknown>;
14
15
  /** Props getter for the floating panel element. Merges floating-ui interaction props with user props. */
@@ -18,12 +19,10 @@ export interface MegaMenuContextValue {
18
19
  /** Ref setter for the trigger (reference) element. */
19
20
  setReference: Dispatch<SetStateAction<HTMLElement | null>>;
20
21
  /** Whether the first item should receive focus when the panel opens. */
21
- focusFirstItemOnOpen: boolean;
22
- /** Toggle the focus-first-item-on-open flag. */
23
- setFocusFirstItemOnOpen: Dispatch<SetStateAction<boolean>>;
22
+ focusFirstItemOnOpenRef: MutableRefObject<boolean>;
24
23
  /** The id of the mega menu panel, used for aria-controls on the trigger. */
25
24
  panelId: string | undefined;
26
- /** Set the panel id when the panel mounts. */
25
+ /** Registers the panel's id so the trigger's aria-controls stays in sync. */
27
26
  setPanelId: Dispatch<SetStateAction<string | undefined>>;
28
27
  }
29
28
  export declare const MegaMenuContext: import("react").Context<MegaMenuContextValue | undefined>;
@@ -1,7 +1,8 @@
1
- import { type HTMLAttributes, type ReactNode } from "react";
2
- export interface MegaMenuGroupProps extends HTMLAttributes<HTMLDivElement> {
1
+ import { type ComponentPropsWithoutRef, type ReactNode } from "react";
2
+ export interface MegaMenuGroupProps extends ComponentPropsWithoutRef<"div"> {
3
3
  /**
4
- * The content of the mega menu group, typically MegaMenuHeader and MegaMenuItem components.
4
+ * The content of the mega menu group: a `MegaMenuGroupHeading` and a
5
+ * `MegaMenuList` of `MegaMenuListItem`s.
5
6
  */
6
7
  children?: ReactNode;
7
8
  }
@@ -0,0 +1,12 @@
1
+ export interface MegaMenuGroupContextValue {
2
+ /**
3
+ * The rendered heading's id, used to label the item list via `aria-labelledby`.
4
+ * `undefined` when the group has no `MegaMenuGroupHeading`.
5
+ */
6
+ headingId: string | undefined;
7
+ /** Register (or clear, with `undefined`) the heading's id. */
8
+ setHeadingId: (id: string | undefined) => void;
9
+ }
10
+ export declare const MegaMenuGroupContext: import("react").Context<MegaMenuGroupContextValue>;
11
+ /** Access the nearest `MegaMenuGroup` context. */
12
+ export declare function useMegaMenuGroup(): MegaMenuGroupContextValue;
@@ -0,0 +1,13 @@
1
+ import { type ComponentPropsWithoutRef, type ReactNode } from "react";
2
+ export interface MegaMenuGroupHeadingProps extends ComponentPropsWithoutRef<"h2"> {
3
+ /**
4
+ * The content of the mega menu group heading.
5
+ */
6
+ children?: ReactNode;
7
+ /**
8
+ * The heading element to render.
9
+ * @default "h3"
10
+ */
11
+ as?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
12
+ }
13
+ export declare const MegaMenuGroupHeading: import("react").ForwardRefExoticComponent<MegaMenuGroupHeadingProps & import("react").RefAttributes<HTMLHeadingElement>>;
@@ -1,7 +1,7 @@
1
- import { type HTMLAttributes, type ReactNode } from "react";
2
- export interface MegaMenuGroupsProps extends HTMLAttributes<HTMLDivElement> {
1
+ import { type ComponentPropsWithoutRef, type ReactNode } from "react";
2
+ export interface MegaMenuGroupsProps extends ComponentPropsWithoutRef<"div"> {
3
3
  /**
4
- * The content of the mega menu section.
4
+ * The `MegaMenuGroup` columns of the mega menu.
5
5
  */
6
6
  children?: ReactNode;
7
7
  }
@@ -0,0 +1,16 @@
1
+ import { type PolymorphicComponentPropWithRef } from "@salt-ds/core";
2
+ import { type ElementType, type FunctionComponent, type ReactNode } from "react";
3
+ export type MegaMenuListProps<T extends ElementType = "ul"> = PolymorphicComponentPropWithRef<T, {
4
+ /**
5
+ * The items of the group, typically `MegaMenuListItem` components. Each
6
+ * `MegaMenuListItem` renders its own `<li>`.
7
+ */
8
+ children?: ReactNode;
9
+ }>;
10
+ type MegaMenuListComponent = <T extends ElementType = "ul">(props: MegaMenuListProps<T>) => ReturnType<FunctionComponent>;
11
+ /**
12
+ * The list of a group's `MegaMenuListItem`s. Renders a `<ul>` by default; pass
13
+ * `as="ol"` for an ordered list.
14
+ */
15
+ export declare const MegaMenuList: MegaMenuListComponent;
16
+ export {};
@@ -0,0 +1,25 @@
1
+ import { type RenderPropsType } from "@salt-ds/core";
2
+ import { type ComponentPropsWithoutRef, type MouseEventHandler, type ReactNode } from "react";
3
+ export interface MegaMenuListItemProps extends Omit<ComponentPropsWithoutRef<"li">, "onClick"> {
4
+ /**
5
+ * The content of the mega menu item.
6
+ */
7
+ children?: ReactNode;
8
+ /**
9
+ * Whether the item is the current page. Sets `aria-current="page"`
10
+ */
11
+ current?: boolean;
12
+ /**
13
+ * Href passed to the link action element.
14
+ */
15
+ href?: string;
16
+ /**
17
+ * Called when the item's action is activated, before the menu closes.
18
+ */
19
+ onClick?: MouseEventHandler<HTMLAnchorElement>;
20
+ /**
21
+ * Render prop to enable customization of the underlying action element (e.g. a router `Link`).
22
+ */
23
+ render?: RenderPropsType["render"];
24
+ }
25
+ export declare const MegaMenuListItem: import("react").ForwardRefExoticComponent<MegaMenuListItemProps & import("react").RefAttributes<HTMLLIElement>>;
@@ -1,5 +1,5 @@
1
- import { type HTMLAttributes, type ReactNode } from "react";
2
- export interface MegaMenuPanelProps extends HTMLAttributes<HTMLDivElement> {
1
+ import { type ComponentPropsWithoutRef, type ReactNode } from "react";
2
+ export interface MegaMenuPanelProps extends ComponentPropsWithoutRef<"div"> {
3
3
  /**
4
4
  * The content of the mega menu panel.
5
5
  */
@@ -2,6 +2,7 @@ import { type ReactNode } from "react";
2
2
  export interface MegaMenuTriggerProps {
3
3
  /**
4
4
  * The trigger element for the mega menu, typically a `NavigationItem` or `Button`.
5
+ * Wrap each mega menu in its own `<li>` — arrow-key navigation between triggers depends on it.
5
6
  */
6
7
  children?: ReactNode;
7
8
  }
@@ -1,9 +1,11 @@
1
1
  export * from "./MegaMenu";
2
+ export * from "./MegaMenuActions";
3
+ export * from "./MegaMenuAside";
4
+ export * from "./MegaMenuContent";
2
5
  export * from "./MegaMenuGroup";
6
+ export * from "./MegaMenuGroupHeading";
3
7
  export * from "./MegaMenuGroups";
4
- export * from "./MegaMenuHeader";
5
- export * from "./MegaMenuItem";
8
+ export * from "./MegaMenuList";
9
+ export * from "./MegaMenuListItem";
6
10
  export * from "./MegaMenuPanel";
7
- export * from "./MegaMenuSupportingActions";
8
- export * from "./MegaMenuSupportingContent";
9
11
  export * from "./MegaMenuTrigger";
@@ -0,0 +1,16 @@
1
+ import type { ElementProps, FloatingRootContext } from "@floating-ui/react";
2
+ export declare const FOCUSABLE_SELECTOR = "a[href], button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])";
3
+ export interface UseMegaMenuNavigationProps {
4
+ /**
5
+ * Whether the interaction is enabled.
6
+ * @default true
7
+ */
8
+ enabled?: boolean;
9
+ }
10
+ /**
11
+ * Floating-ui interaction hook for mega menu keyboard navigation. Handles keys
12
+ * on the panel only; the trigger keys are owned by `MegaMenuTrigger`.
13
+ */
14
+ export declare function useMegaMenuNavigation(context: FloatingRootContext, props?: UseMegaMenuNavigationProps): ElementProps;
15
+ /** Focus the first navigable item inside a mega menu panel, retrying until rendered. */
16
+ export declare function focusFirstItem(panel: HTMLElement, attempt?: number): void;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Resolves the panel's page-margin token to pixels for floating-ui padding, to
3
+ * handle token (`--saltMegaMenuPanel-pageMargin`) override by consumers
4
+ * (edge to edge example).
5
+ */
6
+ export declare function usePageMargin(referenceEl: HTMLElement | null | undefined): number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salt-ds/lab",
3
- "version": "1.0.0-alpha.95",
3
+ "version": "1.0.0-alpha.96",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -21,7 +21,7 @@
21
21
  ],
22
22
  "dependencies": {
23
23
  "@floating-ui/react": "^0.26.28",
24
- "@salt-ds/core": "^1.64.0",
24
+ "@salt-ds/core": "^1.64.1",
25
25
  "@salt-ds/icons": "^1.18.0",
26
26
  "@salt-ds/styles": "0.3.0",
27
27
  "@salt-ds/window": "0.1.1",
@@ -1,6 +0,0 @@
1
- 'use strict';
2
-
3
- var css_248z = ".saltMegaMenuHeader-content {\n display: flex;\n align-items: center;\n padding: var(--salt-spacing-50) var(--salt-spacing-100);\n font-family: var(--salt-text-label-fontFamily);\n font-size: var(--salt-text-label-fontSize);\n font-weight: var(--salt-text-fontWeight-strong);\n line-height: var(--salt-text-label-lineHeight);\n min-height: var(--salt-size-base);\n color: var(--salt-content-secondary-foreground);\n}\n.saltMegaMenuHeader {\n margin-bottom: var(--salt-spacing-50);\n border-bottom: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-separable-tertiary-borderColor);\n}\n";
4
-
5
- module.exports = css_248z;
6
- //# sourceMappingURL=MegaMenuHeader.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MegaMenuHeader.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,25 +0,0 @@
1
- 'use strict';
2
-
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var core = require('@salt-ds/core');
5
- var styles = require('@salt-ds/styles');
6
- var window = require('@salt-ds/window');
7
- var clsx = require('clsx');
8
- var react = require('react');
9
- var MegaMenuHeader$1 = require('./MegaMenuHeader.css.js');
10
-
11
- const withBaseName = core.makePrefixer("saltMegaMenuHeader");
12
- const MegaMenuHeader = react.forwardRef(
13
- function MegaMenuHeader2({ children, className, ...rest }, ref) {
14
- const targetWindow = window.useWindow();
15
- styles.useComponentCssInjection({
16
- testId: "salt-mega-menu-header",
17
- css: MegaMenuHeader$1,
18
- window: targetWindow
19
- });
20
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx.clsx(withBaseName(), className), ref, ...rest, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx.clsx(withBaseName("content")), children }) });
21
- }
22
- );
23
-
24
- exports.MegaMenuHeader = MegaMenuHeader;
25
- //# sourceMappingURL=MegaMenuHeader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MegaMenuHeader.js","sources":["../src/mega-menu/MegaMenuHeader.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n} from \"react\";\nimport megaMenuHeaderCss from \"./MegaMenuHeader.css\";\n\nconst withBaseName = makePrefixer(\"saltMegaMenuHeader\");\n\nexport interface MegaMenuHeaderProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * The content of the mega menu header.\n */\n children?: ReactNode;\n}\n\nexport const MegaMenuHeader = forwardRef<HTMLDivElement, MegaMenuHeaderProps>(\n function MegaMenuHeader({ children, className, ...rest }, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-mega-menu-header\",\n css: megaMenuHeaderCss,\n window: targetWindow,\n });\n\n return (\n <div className={clsx(withBaseName(), className)} ref={ref} {...rest}>\n <div className={clsx(withBaseName(\"content\"))}>{children}</div>\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","MegaMenuHeader","useWindow","useComponentCssInjection","megaMenuHeaderCss","jsx","clsx"],"mappings":";;;;;;;;;;AAWA,MAAM,YAAA,GAAeA,kBAAa,oBAAoB,CAAA;AAS/C,MAAM,cAAA,GAAiBC,gBAAA;AAAA,EAC5B,SAASC,gBAAe,EAAE,QAAA,EAAU,WAAW,GAAG,IAAA,IAAQ,GAAA,EAAK;AAC7D,IAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,IAAAC,+BAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,uBAAA;AAAA,MACR,GAAA,EAAKC,gBAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,uBACEC,cAAA,CAAC,SAAI,SAAA,EAAWC,SAAA,CAAK,cAAa,EAAG,SAAS,GAAG,GAAA,EAAW,GAAG,MAC7D,QAAA,kBAAAD,cAAA,CAAC,KAAA,EAAA,EAAI,WAAWC,SAAA,CAAK,YAAA,CAAa,SAAS,CAAC,CAAA,EAAI,UAAS,CAAA,EAC3D,CAAA;AAAA,EAEJ;AACF;;;;"}
@@ -1,6 +0,0 @@
1
- 'use strict';
2
-
3
- var css_248z = ".saltMegaMenuItem {\n list-style: none;\n}\n\n.saltMegaMenuItem > a {\n display: flex;\n padding: var(--salt-spacing-50) var(--salt-spacing-100);\n align-items: flex-start;\n color: var(--salt-content-primary-foreground);\n background: var(--salt-selectable-background);\n cursor: var(--salt-cursor-hover);\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n box-sizing: border-box;\n gap: var(--salt-spacing-100);\n position: relative;\n border-radius: var(--salt-palette-corner-weak);\n text-decoration: none;\n}\n\n.saltMegaMenuItem > a > .saltIcon {\n display: flex;\n height: var(--salt-size-base);\n align-items: center;\n}\n\n.saltMegaMenuItem-content {\n flex: 1 0;\n margin: var(--salt-spacing-75) 0;\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n line-height: var(--salt-text-lineHeight);\n}\n\n.saltMegaMenuItem > a:focus-visible {\n outline: var(--salt-focused-outline);\n outline-offset: calc(var(--salt-size-fixed-100) * -2);\n}\n\n.saltMegaMenuItem > a:hover {\n outline: none;\n background: var(--salt-navigable-background-hover);\n}\n\n.saltMegaMenuItem > a:active {\n background: var(--salt-navigable-accent-background-active);\n}\n\n.saltMegaMenuItem > a:active::before {\n content: \"\";\n position: absolute;\n inset: 0;\n box-sizing: border-box;\n border-radius: inherit;\n border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-navigable-accent-borderColor-active);\n pointer-events: none;\n}\n";
4
-
5
- module.exports = css_248z;
6
- //# sourceMappingURL=MegaMenuItem.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MegaMenuItem.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}