@basic-ui/core 0.0.60 → 0.0.62

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 (214) hide show
  1. package/build/cjs/index.js.map +1 -1
  2. package/build/esm/Accordion/AccordionBody.d.ts.map +1 -1
  3. package/build/esm/Accordion/AccordionBody.js +6 -26
  4. package/build/esm/Accordion/AccordionBody.js.map +1 -1
  5. package/build/esm/Accordion/AccordionHeader.d.ts.map +1 -1
  6. package/build/esm/Accordion/AccordionHeader.js +21 -69
  7. package/build/esm/Accordion/AccordionHeader.js.map +1 -1
  8. package/build/esm/Accordion/AccordionItem.d.ts.map +1 -1
  9. package/build/esm/Accordion/AccordionItem.js +31 -18
  10. package/build/esm/Accordion/AccordionItem.js.map +1 -1
  11. package/build/esm/Accordion/context.d.ts +0 -8
  12. package/build/esm/Accordion/context.d.ts.map +1 -1
  13. package/build/esm/Accordion/context.js +0 -11
  14. package/build/esm/Accordion/context.js.map +1 -1
  15. package/build/esm/Accordion/scopeQuery.d.ts +1 -0
  16. package/build/esm/Accordion/scopeQuery.d.ts.map +1 -1
  17. package/build/esm/Accordion/scopeQuery.js +3 -0
  18. package/build/esm/Accordion/scopeQuery.js.map +1 -1
  19. package/build/esm/Collapsible/Collapsible.d.ts +13 -0
  20. package/build/esm/Collapsible/Collapsible.d.ts.map +1 -0
  21. package/build/esm/Collapsible/Collapsible.js +53 -0
  22. package/build/esm/Collapsible/Collapsible.js.map +1 -0
  23. package/build/esm/Collapsible/CollapsiblePanel.d.ts +10 -0
  24. package/build/esm/Collapsible/CollapsiblePanel.d.ts.map +1 -0
  25. package/build/esm/Collapsible/CollapsiblePanel.js +85 -0
  26. package/build/esm/Collapsible/CollapsiblePanel.js.map +1 -0
  27. package/build/esm/Collapsible/CollapsibleTrigger.d.ts +11 -0
  28. package/build/esm/Collapsible/CollapsibleTrigger.d.ts.map +1 -0
  29. package/build/esm/Collapsible/CollapsibleTrigger.js +51 -0
  30. package/build/esm/Collapsible/CollapsibleTrigger.js.map +1 -0
  31. package/build/esm/Collapsible/context.d.ts +16 -0
  32. package/build/esm/Collapsible/context.d.ts.map +1 -0
  33. package/build/esm/Collapsible/context.js +11 -0
  34. package/build/esm/Collapsible/context.js.map +1 -0
  35. package/build/esm/Collapsible/index.d.ts +4 -0
  36. package/build/esm/Collapsible/index.d.ts.map +1 -0
  37. package/build/esm/Collapsible/index.js +4 -0
  38. package/build/esm/Collapsible/index.js.map +1 -0
  39. package/build/esm/Menu/Menu.d.ts +3 -2
  40. package/build/esm/Menu/Menu.d.ts.map +1 -1
  41. package/build/esm/Menu/Menu.js +64 -4
  42. package/build/esm/Menu/Menu.js.map +1 -1
  43. package/build/esm/Menu/MenuButton.d.ts.map +1 -1
  44. package/build/esm/Menu/MenuButton.js +85 -8
  45. package/build/esm/Menu/MenuButton.js.map +1 -1
  46. package/build/esm/Menu/MenuItem.d.ts.map +1 -1
  47. package/build/esm/Menu/MenuItem.js +16 -4
  48. package/build/esm/Menu/MenuItem.js.map +1 -1
  49. package/build/esm/Menu/MenuList.d.ts.map +1 -1
  50. package/build/esm/Menu/MenuList.js +47 -12
  51. package/build/esm/Menu/MenuList.js.map +1 -1
  52. package/build/esm/Menu/MenuPopover.d.ts.map +1 -1
  53. package/build/esm/Menu/MenuPopover.js +12 -1
  54. package/build/esm/Menu/MenuPopover.js.map +1 -1
  55. package/build/esm/Menu/MenuSubmenuTrigger.d.ts +8 -0
  56. package/build/esm/Menu/MenuSubmenuTrigger.d.ts.map +1 -0
  57. package/build/esm/Menu/MenuSubmenuTrigger.js +131 -0
  58. package/build/esm/Menu/MenuSubmenuTrigger.js.map +1 -0
  59. package/build/esm/Menu/context.d.ts +13 -3
  60. package/build/esm/Menu/context.d.ts.map +1 -1
  61. package/build/esm/Menu/context.js +1 -0
  62. package/build/esm/Menu/context.js.map +1 -1
  63. package/build/esm/Menu/index.d.ts +3 -0
  64. package/build/esm/Menu/index.d.ts.map +1 -1
  65. package/build/esm/Menu/index.js +2 -0
  66. package/build/esm/Menu/index.js.map +1 -1
  67. package/build/esm/Menu/scope.d.ts +1 -0
  68. package/build/esm/Menu/scope.d.ts.map +1 -1
  69. package/build/esm/Menu/scope.js +2 -1
  70. package/build/esm/Menu/scope.js.map +1 -1
  71. package/build/esm/MenuBar/MenuBar.d.ts +11 -0
  72. package/build/esm/MenuBar/MenuBar.d.ts.map +1 -0
  73. package/build/esm/MenuBar/MenuBar.js +153 -0
  74. package/build/esm/MenuBar/MenuBar.js.map +1 -0
  75. package/build/esm/MenuBar/context.d.ts +29 -0
  76. package/build/esm/MenuBar/context.d.ts.map +1 -0
  77. package/build/esm/MenuBar/context.js +7 -0
  78. package/build/esm/MenuBar/context.js.map +1 -0
  79. package/build/esm/MenuBar/index.d.ts +2 -0
  80. package/build/esm/MenuBar/index.d.ts.map +1 -0
  81. package/build/esm/MenuBar/index.js +2 -0
  82. package/build/esm/MenuBar/index.js.map +1 -0
  83. package/build/esm/Slider/Slider.d.ts +47 -1
  84. package/build/esm/Slider/Slider.d.ts.map +1 -1
  85. package/build/esm/Slider/Slider.js +91 -5
  86. package/build/esm/Slider/Slider.js.map +1 -1
  87. package/build/esm/ToggleGroup/ToggleGroup.d.ts +40 -0
  88. package/build/esm/ToggleGroup/ToggleGroup.d.ts.map +1 -0
  89. package/build/esm/ToggleGroup/ToggleGroup.js +113 -0
  90. package/build/esm/ToggleGroup/ToggleGroup.js.map +1 -0
  91. package/build/esm/ToggleGroup/ToggleGroupContext.d.ts +10 -0
  92. package/build/esm/ToggleGroup/ToggleGroupContext.d.ts.map +1 -0
  93. package/build/esm/ToggleGroup/ToggleGroupContext.js +6 -0
  94. package/build/esm/ToggleGroup/ToggleGroupContext.js.map +1 -0
  95. package/build/esm/ToggleGroup/index.d.ts +3 -0
  96. package/build/esm/ToggleGroup/index.d.ts.map +1 -0
  97. package/build/esm/ToggleGroup/index.js +3 -0
  98. package/build/esm/ToggleGroup/index.js.map +1 -0
  99. package/build/esm/Tree/Tree.d.ts +3 -0
  100. package/build/esm/Tree/Tree.d.ts.map +1 -0
  101. package/build/esm/Tree/Tree.js +730 -0
  102. package/build/esm/Tree/Tree.js.map +1 -0
  103. package/build/esm/Tree/TreeHeader.d.ts +3 -0
  104. package/build/esm/Tree/TreeHeader.d.ts.map +1 -0
  105. package/build/esm/Tree/TreeHeader.js +5 -0
  106. package/build/esm/Tree/TreeHeader.js.map +1 -0
  107. package/build/esm/Tree/TreeItem.d.ts +3 -0
  108. package/build/esm/Tree/TreeItem.d.ts.map +1 -0
  109. package/build/esm/Tree/TreeItem.js +5 -0
  110. package/build/esm/Tree/TreeItem.js.map +1 -0
  111. package/build/esm/Tree/TreeItemContent.d.ts +3 -0
  112. package/build/esm/Tree/TreeItemContent.d.ts.map +1 -0
  113. package/build/esm/Tree/TreeItemContent.js +69 -0
  114. package/build/esm/Tree/TreeItemContent.js.map +1 -0
  115. package/build/esm/Tree/TreeSection.d.ts +3 -0
  116. package/build/esm/Tree/TreeSection.d.ts.map +1 -0
  117. package/build/esm/Tree/TreeSection.js +5 -0
  118. package/build/esm/Tree/TreeSection.js.map +1 -0
  119. package/build/esm/Tree/collection.d.ts +18 -0
  120. package/build/esm/Tree/collection.d.ts.map +1 -0
  121. package/build/esm/Tree/collection.js +252 -0
  122. package/build/esm/Tree/collection.js.map +1 -0
  123. package/build/esm/Tree/context.d.ts +3 -0
  124. package/build/esm/Tree/context.d.ts.map +1 -0
  125. package/build/esm/Tree/context.js +3 -0
  126. package/build/esm/Tree/context.js.map +1 -0
  127. package/build/esm/Tree/index.d.ts +8 -0
  128. package/build/esm/Tree/index.d.ts.map +1 -0
  129. package/build/esm/Tree/index.js +7 -0
  130. package/build/esm/Tree/index.js.map +1 -0
  131. package/build/esm/Tree/types.d.ts +128 -0
  132. package/build/esm/Tree/types.d.ts.map +1 -0
  133. package/build/esm/Tree/types.js +2 -0
  134. package/build/esm/Tree/types.js.map +1 -0
  135. package/build/esm/hooks/index.d.ts +1 -0
  136. package/build/esm/hooks/index.d.ts.map +1 -1
  137. package/build/esm/hooks/index.js +1 -0
  138. package/build/esm/hooks/index.js.map +1 -1
  139. package/build/esm/hooks/useTransitionStatus.d.ts +7 -0
  140. package/build/esm/hooks/useTransitionStatus.d.ts.map +1 -0
  141. package/build/esm/hooks/useTransitionStatus.js +48 -0
  142. package/build/esm/hooks/useTransitionStatus.js.map +1 -0
  143. package/build/esm/index.d.ts +5 -0
  144. package/build/esm/index.d.ts.map +1 -1
  145. package/build/esm/index.js +5 -0
  146. package/build/esm/index.js.map +1 -1
  147. package/build/esm/toggle/Toggle.d.ts +28 -0
  148. package/build/esm/toggle/Toggle.d.ts.map +1 -0
  149. package/build/esm/toggle/Toggle.js +55 -0
  150. package/build/esm/toggle/Toggle.js.map +1 -0
  151. package/build/esm/toggle/index.d.ts +2 -0
  152. package/build/esm/toggle/index.d.ts.map +1 -0
  153. package/build/esm/toggle/index.js +2 -0
  154. package/build/esm/toggle/index.js.map +1 -0
  155. package/build/esm/utils/assign-ref.d.ts +3 -3
  156. package/build/esm/utils/assign-ref.d.ts.map +1 -1
  157. package/build/esm/utils/assign-ref.js +1 -1
  158. package/build/esm/utils/assign-ref.js.map +1 -1
  159. package/build/tsconfig-build.tsbuildinfo +1 -1
  160. package/build/tsconfig.tsbuildinfo +1 -1
  161. package/package.json +7 -4
  162. package/src/Accordion/AccordionBody.tsx +6 -35
  163. package/src/Accordion/AccordionHeader.tsx +29 -103
  164. package/src/Accordion/AccordionItem.tsx +40 -29
  165. package/src/Accordion/context.ts +0 -18
  166. package/src/Accordion/scopeQuery.ts +4 -0
  167. package/src/Collapsible/Collapsible.story.tsx +153 -0
  168. package/src/Collapsible/Collapsible.tsx +79 -0
  169. package/src/Collapsible/CollapsiblePanel.tsx +103 -0
  170. package/src/Collapsible/CollapsibleTrigger.tsx +60 -0
  171. package/src/Collapsible/context.ts +28 -0
  172. package/src/Collapsible/index.ts +3 -0
  173. package/src/Menu/Menu.story.tsx +70 -1
  174. package/src/Menu/Menu.tsx +141 -65
  175. package/src/Menu/MenuButton.tsx +115 -9
  176. package/src/Menu/MenuItem.tsx +20 -3
  177. package/src/Menu/MenuList.tsx +50 -13
  178. package/src/Menu/MenuPopover.tsx +12 -2
  179. package/src/Menu/MenuSubmenuTrigger.tsx +167 -0
  180. package/src/Menu/context.ts +20 -10
  181. package/src/Menu/index.ts +3 -0
  182. package/src/Menu/scope.ts +4 -1
  183. package/src/Menu/styles.css +57 -22
  184. package/src/MenuBar/MenuBar.story.tsx +92 -0
  185. package/src/MenuBar/MenuBar.tsx +236 -0
  186. package/src/MenuBar/context.ts +46 -0
  187. package/src/MenuBar/index.ts +1 -0
  188. package/src/MenuBar/styles.css +78 -0
  189. package/src/Slider/Slider.story.tsx +1 -1
  190. package/src/Slider/Slider.tsx +145 -8
  191. package/src/Toggle/Toggle.story.tsx +42 -0
  192. package/src/Toggle/Toggle.tsx +95 -0
  193. package/src/Toggle/index.ts +1 -0
  194. package/src/Toggle/styles.css +39 -0
  195. package/src/ToggleGroup/ToggleGroup.story.tsx +86 -0
  196. package/src/ToggleGroup/ToggleGroup.tsx +185 -0
  197. package/src/ToggleGroup/ToggleGroupContext.ts +17 -0
  198. package/src/ToggleGroup/index.ts +2 -0
  199. package/src/ToggleGroup/styles.css +66 -0
  200. package/src/Tree/Tree.story.tsx +221 -0
  201. package/src/Tree/Tree.tsx +1081 -0
  202. package/src/Tree/TreeHeader.tsx +9 -0
  203. package/src/Tree/TreeItem.tsx +9 -0
  204. package/src/Tree/TreeItemContent.tsx +91 -0
  205. package/src/Tree/TreeSection.tsx +9 -0
  206. package/src/Tree/collection.tsx +371 -0
  207. package/src/Tree/context.ts +6 -0
  208. package/src/Tree/index.ts +7 -0
  209. package/src/Tree/styles.css +135 -0
  210. package/src/Tree/types.ts +161 -0
  211. package/src/hooks/index.ts +1 -0
  212. package/src/hooks/useTransitionStatus.ts +65 -0
  213. package/src/index.ts +5 -0
  214. package/src/utils/assign-ref.ts +4 -4
@@ -0,0 +1,85 @@
1
+ import { forwardRef, Fragment, useEffect, useLayoutEffect, useId, useRef, useState } from 'react';
2
+ import { useCollapsibleContext } from './context';
3
+ import { assignMultipleRefs } from '../utils';
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ export const CollapsiblePanel = /*#__PURE__*/forwardRef(function CollapsiblePanel(props, forwardedRef) {
6
+ const {
7
+ as: Comp = 'div',
8
+ innerAs,
9
+ id: idProp,
10
+ keepMounted = false,
11
+ style,
12
+ ...otherProps
13
+ } = props;
14
+ const {
15
+ open,
16
+ mounted,
17
+ transitionStatus,
18
+ setMounted,
19
+ setPanelId,
20
+ disabled
21
+ } = useCollapsibleContext();
22
+ const generatedId = useId();
23
+ const panelId = idProp ?? generatedId;
24
+ const panelRef = useRef(null);
25
+ const mergedRef = assignMultipleRefs(panelRef, forwardedRef);
26
+ const [height, setHeight] = useState();
27
+ const [width, setWidth] = useState();
28
+ useEffect(() => {
29
+ setPanelId(panelId);
30
+ return () => {
31
+ setPanelId(undefined);
32
+ };
33
+ }, [panelId, setPanelId]);
34
+ useLayoutEffect(() => {
35
+ const node = panelRef.current;
36
+ if (!node) return;
37
+ if (open || transitionStatus === 'starting' || transitionStatus === 'ending') {
38
+ setHeight(node.scrollHeight);
39
+ setWidth(node.scrollWidth);
40
+ }
41
+ }, [open, transitionStatus]);
42
+ useEffect(() => {
43
+ if (open || !mounted || transitionStatus !== 'ending') return;
44
+ const node = panelRef.current;
45
+ if (!node) return;
46
+ const handleComplete = e => {
47
+ if (e && e.target !== node) return; // Ignore bubbled events
48
+ setMounted(false);
49
+ };
50
+ node.addEventListener('animationend', handleComplete);
51
+ node.addEventListener('transitionend', handleComplete);
52
+ const styles = window.getComputedStyle(node);
53
+ const hasAnimation = styles.animationDuration !== '0s' && styles.animationName !== 'none';
54
+ const hasTransition = styles.transitionDuration !== '0s' && styles.transitionDuration !== '';
55
+ if (!hasAnimation && !hasTransition) {
56
+ setMounted(false);
57
+ }
58
+ return () => {
59
+ node.removeEventListener('animationend', handleComplete);
60
+ node.removeEventListener('transitionend', handleComplete);
61
+ };
62
+ }, [open, mounted, transitionStatus, setMounted]);
63
+ if (!mounted && !keepMounted) {
64
+ return null;
65
+ }
66
+ const hidden = !open && !mounted;
67
+ return /*#__PURE__*/_jsx(Comp, {
68
+ ...(Comp !== Fragment ? {
69
+ as: innerAs,
70
+ ref: mergedRef
71
+ } : {}),
72
+ id: panelId,
73
+ hidden: hidden ? true : undefined,
74
+ "data-open": open ? '' : undefined,
75
+ "data-disabled": disabled ? '' : undefined,
76
+ "data-state": open ? 'open' : 'closed',
77
+ style: {
78
+ ...style,
79
+ '--collapsible-panel-height': height !== undefined ? `${height}px` : undefined,
80
+ '--collapsible-panel-width': width !== undefined ? `${width}px` : undefined
81
+ },
82
+ ...otherProps
83
+ });
84
+ });
85
+ //# sourceMappingURL=CollapsiblePanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollapsiblePanel.js","names":["forwardRef","Fragment","useEffect","useLayoutEffect","useId","useRef","useState","useCollapsibleContext","assignMultipleRefs","jsx","_jsx","CollapsiblePanel","props","forwardedRef","as","Comp","innerAs","id","idProp","keepMounted","style","otherProps","open","mounted","transitionStatus","setMounted","setPanelId","disabled","generatedId","panelId","panelRef","mergedRef","height","setHeight","width","setWidth","undefined","node","current","scrollHeight","scrollWidth","handleComplete","e","target","addEventListener","styles","window","getComputedStyle","hasAnimation","animationDuration","animationName","hasTransition","transitionDuration","removeEventListener","hidden","ref"],"sources":["../../../src/Collapsible/CollapsiblePanel.tsx"],"sourcesContent":["import type { ElementType, ReactNode, HTMLAttributes } from 'react';\nimport { forwardRef, Fragment, useEffect, useLayoutEffect, useId, useRef, useState } from 'react';\nimport { useCollapsibleContext } from './context';\nimport { assignMultipleRefs } from '../utils';\n\nexport interface CollapsiblePanelProps extends HTMLAttributes<HTMLElement> {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n children?: ReactNode;\n id?: string;\n keepMounted?: boolean;\n}\n\nexport const CollapsiblePanel = forwardRef<HTMLElement, CollapsiblePanelProps>(\n function CollapsiblePanel(props, forwardedRef) {\n const {\n as: Comp = 'div',\n innerAs,\n id: idProp,\n keepMounted = false,\n style,\n ...otherProps\n } = props;\n\n const { open, mounted, transitionStatus, setMounted, setPanelId, disabled } = useCollapsibleContext();\n const generatedId = useId();\n const panelId = idProp ?? generatedId;\n \n const panelRef = useRef<HTMLElement>(null);\n const mergedRef = assignMultipleRefs(panelRef, forwardedRef);\n\n const [height, setHeight] = useState<number | undefined>();\n const [width, setWidth] = useState<number | undefined>();\n\n useEffect(() => {\n setPanelId(panelId);\n return () => {\n setPanelId(undefined);\n };\n }, [panelId, setPanelId]);\n\n useLayoutEffect(() => {\n const node = panelRef.current;\n if (!node) return;\n\n if (open || transitionStatus === 'starting' || transitionStatus === 'ending') {\n setHeight(node.scrollHeight);\n setWidth(node.scrollWidth);\n }\n }, [open, transitionStatus]);\n\n useEffect(() => {\n if (open || !mounted || transitionStatus !== 'ending') return;\n\n const node = panelRef.current;\n if (!node) return;\n\n const handleComplete = (e?: Event) => {\n if (e && e.target !== node) return; // Ignore bubbled events\n setMounted(false);\n };\n\n node.addEventListener('animationend', handleComplete);\n node.addEventListener('transitionend', handleComplete);\n\n const styles = window.getComputedStyle(node);\n const hasAnimation = styles.animationDuration !== '0s' && styles.animationName !== 'none';\n const hasTransition = styles.transitionDuration !== '0s' && styles.transitionDuration !== '';\n\n if (!hasAnimation && !hasTransition) {\n setMounted(false);\n }\n\n return () => {\n node.removeEventListener('animationend', handleComplete);\n node.removeEventListener('transitionend', handleComplete);\n };\n }, [open, mounted, transitionStatus, setMounted]);\n\n if (!mounted && !keepMounted) {\n return null;\n }\n\n const hidden = !open && !mounted;\n\n return (\n <Comp\n {...(Comp !== Fragment ? { as: innerAs, ref: mergedRef } : {})}\n id={panelId}\n hidden={hidden ? true : undefined}\n data-open={open ? '' : undefined}\n data-disabled={disabled ? '' : undefined}\n data-state={open ? 'open' : 'closed'}\n style={{\n ...style,\n '--collapsible-panel-height': height !== undefined ? `${height}px` : undefined,\n '--collapsible-panel-width': width !== undefined ? `${width}px` : undefined,\n } as React.CSSProperties}\n {...otherProps}\n />\n );\n }\n);\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ import type { ElementType, ReactNode, MouseEvent, KeyboardEvent, HTMLAttributes } from 'react';
2
+ export interface CollapsibleTriggerProps extends HTMLAttributes<HTMLElement> {
3
+ as?: ElementType<any>;
4
+ innerAs?: ElementType<any>;
5
+ children?: ReactNode;
6
+ onClick?: (e: MouseEvent<any>) => void;
7
+ onKeyDown?: (e: KeyboardEvent<any>) => void;
8
+ disabled?: boolean;
9
+ }
10
+ export declare const CollapsibleTrigger: import("react").ForwardRefExoticComponent<CollapsibleTriggerProps & import("react").RefAttributes<HTMLElement>>;
11
+ //# sourceMappingURL=CollapsibleTrigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollapsibleTrigger.d.ts","sourceRoot":"","sources":["../../../src/Collapsible/CollapsibleTrigger.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAK/F,MAAM,WAAW,uBAAwB,SAAQ,cAAc,CAAC,WAAW,CAAC;IAC1E,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;IACvC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,kBAAkB,iHA6C9B,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { forwardRef, Fragment } from 'react';
2
+ import { useCollapsibleContext } from './context';
3
+ import { wrapEvent } from '../utils';
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ export const CollapsibleTrigger = /*#__PURE__*/forwardRef(function CollapsibleTrigger(props, forwardedRef) {
6
+ const {
7
+ as: Comp = 'button',
8
+ innerAs,
9
+ onClick,
10
+ onKeyDown,
11
+ disabled,
12
+ ...otherProps
13
+ } = props;
14
+ const {
15
+ open,
16
+ panelId,
17
+ disabled: contextDisabled,
18
+ onChange
19
+ } = useCollapsibleContext();
20
+ const isDisabled = disabled ?? contextDisabled;
21
+ const handleClick = e => {
22
+ if (isDisabled) {
23
+ e.preventDefault();
24
+ return;
25
+ }
26
+ onChange(e, !open);
27
+ };
28
+ const handleKeyDown = e => {
29
+ if (Comp !== 'button' && (e.key === 'Enter' || e.key === ' ')) {
30
+ e.preventDefault();
31
+ handleClick(e);
32
+ }
33
+ };
34
+ return /*#__PURE__*/_jsx(Comp, {
35
+ ...(Comp !== Fragment ? {
36
+ as: innerAs,
37
+ ref: forwardedRef
38
+ } : {}),
39
+ type: Comp === 'button' ? 'button' : undefined,
40
+ "aria-controls": open ? panelId : undefined,
41
+ "aria-expanded": open,
42
+ disabled: isDisabled,
43
+ "data-open": open ? '' : undefined,
44
+ "data-disabled": isDisabled ? '' : undefined,
45
+ "data-state": open ? 'open' : 'closed',
46
+ onClick: wrapEvent(onClick, handleClick),
47
+ onKeyDown: wrapEvent(onKeyDown, handleKeyDown),
48
+ ...otherProps
49
+ });
50
+ });
51
+ //# sourceMappingURL=CollapsibleTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollapsibleTrigger.js","names":["forwardRef","Fragment","useCollapsibleContext","wrapEvent","jsx","_jsx","CollapsibleTrigger","props","forwardedRef","as","Comp","innerAs","onClick","onKeyDown","disabled","otherProps","open","panelId","contextDisabled","onChange","isDisabled","handleClick","e","preventDefault","handleKeyDown","key","ref","type","undefined"],"sources":["../../../src/Collapsible/CollapsibleTrigger.tsx"],"sourcesContent":["import type { ElementType, ReactNode, MouseEvent, KeyboardEvent, HTMLAttributes } from 'react';\nimport { forwardRef, Fragment } from 'react';\nimport { useCollapsibleContext } from './context';\nimport { wrapEvent } from '../utils';\n\nexport interface CollapsibleTriggerProps extends HTMLAttributes<HTMLElement> {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n children?: ReactNode;\n onClick?: (e: MouseEvent<any>) => void;\n onKeyDown?: (e: KeyboardEvent<any>) => void;\n disabled?: boolean;\n}\n\nexport const CollapsibleTrigger = forwardRef<HTMLElement, CollapsibleTriggerProps>(\n function CollapsibleTrigger(props, forwardedRef) {\n const {\n as: Comp = 'button',\n innerAs,\n onClick,\n onKeyDown,\n disabled,\n ...otherProps\n } = props;\n\n const { open, panelId, disabled: contextDisabled, onChange } = useCollapsibleContext();\n const isDisabled = disabled ?? contextDisabled;\n\n const handleClick = (e: MouseEvent<any>) => {\n if (isDisabled) {\n e.preventDefault();\n return;\n }\n onChange(e, !open);\n };\n\n const handleKeyDown = (e: KeyboardEvent<any>) => {\n if (Comp !== 'button' && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n handleClick(e as unknown as MouseEvent<any>);\n }\n };\n\n return (\n <Comp\n {...(Comp !== Fragment ? { as: innerAs, ref: forwardedRef } : {})}\n type={Comp === 'button' ? 'button' : undefined}\n aria-controls={open ? panelId : undefined}\n aria-expanded={open}\n disabled={isDisabled}\n data-open={open ? '' : undefined}\n data-disabled={isDisabled ? '' : undefined}\n data-state={open ? 'open' : 'closed'}\n onClick={wrapEvent(onClick, handleClick)}\n onKeyDown={wrapEvent(onKeyDown, handleKeyDown)}\n {...otherProps}\n />\n );\n }\n);\n"],"mappings":"AACA,SAASA,UAAU,EAAEC,QAAQ,QAAQ,OAAO;AAC5C,SAASC,qBAAqB,QAAQ,WAAW;AACjD,SAASC,SAAS,QAAQ,UAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAWrC,OAAO,MAAMC,kBAAkB,gBAAGN,UAAU,CAC1C,SAASM,kBAAkBA,CAACC,KAAK,EAAEC,YAAY,EAAE;EAC/C,MAAM;IACJC,EAAE,EAAEC,IAAI,GAAG,QAAQ;IACnBC,OAAO;IACPC,OAAO;IACPC,SAAS;IACTC,QAAQ;IACR,GAAGC;EACL,CAAC,GAAGR,KAAK;EAET,MAAM;IAAES,IAAI;IAAEC,OAAO;IAAEH,QAAQ,EAAEI,eAAe;IAAEC;EAAS,CAAC,GAAGjB,qBAAqB,CAAC,CAAC;EACtF,MAAMkB,UAAU,GAAGN,QAAQ,IAAII,eAAe;EAE9C,MAAMG,WAAW,GAAIC,CAAkB,IAAK;IAC1C,IAAIF,UAAU,EAAE;MACdE,CAAC,CAACC,cAAc,CAAC,CAAC;MAClB;IACF;IACAJ,QAAQ,CAACG,CAAC,EAAE,CAACN,IAAI,CAAC;EACpB,CAAC;EAED,MAAMQ,aAAa,GAAIF,CAAqB,IAAK;IAC/C,IAAIZ,IAAI,KAAK,QAAQ,KAAKY,CAAC,CAACG,GAAG,KAAK,OAAO,IAAIH,CAAC,CAACG,GAAG,KAAK,GAAG,CAAC,EAAE;MAC7DH,CAAC,CAACC,cAAc,CAAC,CAAC;MAClBF,WAAW,CAACC,CAA+B,CAAC;IAC9C;EACF,CAAC;EAED,oBACEjB,IAAA,CAACK,IAAI;IAAA,IACEA,IAAI,KAAKT,QAAQ,GAAG;MAAEQ,EAAE,EAAEE,OAAO;MAAEe,GAAG,EAAElB;IAAa,CAAC,GAAG,CAAC,CAAC;IAChEmB,IAAI,EAAEjB,IAAI,KAAK,QAAQ,GAAG,QAAQ,GAAGkB,SAAU;IAC/C,iBAAeZ,IAAI,GAAGC,OAAO,GAAGW,SAAU;IAC1C,iBAAeZ,IAAK;IACpBF,QAAQ,EAAEM,UAAW;IACrB,aAAWJ,IAAI,GAAG,EAAE,GAAGY,SAAU;IACjC,iBAAeR,UAAU,GAAG,EAAE,GAAGQ,SAAU;IAC3C,cAAYZ,IAAI,GAAG,MAAM,GAAG,QAAS;IACrCJ,OAAO,EAAET,SAAS,CAACS,OAAO,EAAES,WAAW,CAAE;IACzCR,SAAS,EAAEV,SAAS,CAACU,SAAS,EAAEW,aAAa,CAAE;IAAA,GAC3CT;EAAU,CACf,CAAC;AAEN,CACF,CAAC","ignoreList":[]}
@@ -0,0 +1,16 @@
1
+ import type { Dispatch, SetStateAction } from 'react';
2
+ import type { CollapsibleTriggerEvent } from './Collapsible';
3
+ import type { TransitionStatus } from '../hooks';
4
+ export interface CollapsibleContextProps {
5
+ open: boolean;
6
+ mounted: boolean;
7
+ transitionStatus: TransitionStatus;
8
+ setMounted: Dispatch<SetStateAction<boolean>>;
9
+ panelId: string | undefined;
10
+ disabled: boolean;
11
+ onChange: (e: CollapsibleTriggerEvent, isOpen: boolean) => void;
12
+ setPanelId: Dispatch<SetStateAction<string | undefined>>;
13
+ }
14
+ export declare const CollapsibleProvider: import("react").Provider<CollapsibleContextProps | null>;
15
+ export declare const useCollapsibleContext: () => CollapsibleContextProps;
16
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/Collapsible/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEtD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAE7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,UAAU,EAAE,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9C,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,uBAAuB,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAChE,UAAU,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;CAC1D;AAID,eAAO,MAAM,mBAAmB,0DAA8B,CAAC;AAE/D,eAAO,MAAM,qBAAqB,+BAMjC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { createContext, useContext } from 'react';
2
+ const CollapsibleContext = /*#__PURE__*/createContext(null);
3
+ export const CollapsibleProvider = CollapsibleContext.Provider;
4
+ export const useCollapsibleContext = () => {
5
+ const context = useContext(CollapsibleContext);
6
+ if (!context) {
7
+ throw new Error('Collapsible components must be used within a <Collapsible>');
8
+ }
9
+ return context;
10
+ };
11
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","names":["createContext","useContext","CollapsibleContext","CollapsibleProvider","Provider","useCollapsibleContext","context","Error"],"sources":["../../../src/Collapsible/context.ts"],"sourcesContent":["import type { Dispatch, SetStateAction } from 'react';\nimport { createContext, useContext } from 'react';\nimport type { CollapsibleTriggerEvent } from './Collapsible';\n\nimport type { TransitionStatus } from '../hooks';\n\nexport interface CollapsibleContextProps {\n open: boolean;\n mounted: boolean;\n transitionStatus: TransitionStatus;\n setMounted: Dispatch<SetStateAction<boolean>>;\n panelId: string | undefined;\n disabled: boolean;\n onChange: (e: CollapsibleTriggerEvent, isOpen: boolean) => void;\n setPanelId: Dispatch<SetStateAction<string | undefined>>;\n}\n\nconst CollapsibleContext = createContext<CollapsibleContextProps | null>(null);\n\nexport const CollapsibleProvider = CollapsibleContext.Provider;\n\nexport const useCollapsibleContext = () => {\n const context = useContext(CollapsibleContext);\n if (!context) {\n throw new Error('Collapsible components must be used within a <Collapsible>');\n }\n return context;\n};\n"],"mappings":"AACA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;AAgBjD,MAAMC,kBAAkB,gBAAGF,aAAa,CAAiC,IAAI,CAAC;AAE9E,OAAO,MAAMG,mBAAmB,GAAGD,kBAAkB,CAACE,QAAQ;AAE9D,OAAO,MAAMC,qBAAqB,GAAGA,CAAA,KAAM;EACzC,MAAMC,OAAO,GAAGL,UAAU,CAACC,kBAAkB,CAAC;EAC9C,IAAI,CAACI,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CAAC,4DAA4D,CAAC;EAC/E;EACA,OAAOD,OAAO;AAChB,CAAC","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ export * from './Collapsible';
2
+ export * from './CollapsibleTrigger';
3
+ export * from './CollapsiblePanel';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Collapsible/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './Collapsible';
2
+ export * from './CollapsibleTrigger';
3
+ export * from './CollapsiblePanel';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/Collapsible/index.ts"],"sourcesContent":["export * from './Collapsible';\nexport * from './CollapsibleTrigger';\nexport * from './CollapsiblePanel';\n"],"mappings":"AAAA,cAAc,eAAe;AAC7B,cAAc,sBAAsB;AACpC,cAAc,oBAAoB","ignoreList":[]}
@@ -1,9 +1,10 @@
1
- import type { KeyboardEvent, MouseEvent, PointerEvent, ReactNode, ElementType } from 'react';
1
+ import type { ReactNode, ElementType } from 'react';
2
+ import type { MenuTriggerEvent } from './context';
2
3
  export interface MenuProps {
3
4
  as?: ElementType<any>;
4
5
  innerAs?: ElementType<any>;
5
6
  children?: ReactNode;
6
- onChange?: (e: KeyboardEvent<HTMLElement> | MouseEvent<HTMLElement> | PointerEvent<HTMLElement>, isOpen: boolean) => void;
7
+ onChange?: (e: MenuTriggerEvent, isOpen: boolean) => void;
7
8
  open?: boolean;
8
9
  defaultOpen?: boolean;
9
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../../src/Menu/Menu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,YAAY,EACZ,SAAS,EACT,WAAW,EACZ,MAAM,OAAO,CAAC;AAQf,MAAM,WAAW,SAAS;IACxB,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,CACT,CAAC,EACG,aAAa,CAAC,WAAW,CAAC,GAC1B,UAAU,CAAC,WAAW,CAAC,GACvB,YAAY,CAAC,WAAW,CAAC,EAC7B,MAAM,EAAE,OAAO,KACZ,IAAI,CAAC;IACV,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,IAAI,sGAoDf,CAAC"}
1
+ {"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../../src/Menu/Menu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAWpD,OAAO,KAAK,EAAoB,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAMpE,MAAM,WAAW,SAAS;IACxB,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,IAAI,sGAmIhB,CAAC"}
@@ -1,6 +1,7 @@
1
- import { useState, forwardRef, useRef, Fragment, useId } from 'react';
2
- import { MenuProvider } from './context';
1
+ import { useState, forwardRef, useRef, Fragment, useId, useCallback, useEffect } from 'react';
2
+ import { MenuProvider, useOptionalMenuContext } from './context';
3
3
  import { useControlledState } from '../hooks';
4
+ import { useOptionalMenuBarContext } from '../MenuBar/context';
4
5
  import { jsx as _jsx } from "react/jsx-runtime";
5
6
  export const Menu = /*#__PURE__*/forwardRef(function Menu(props, forwardedRef) {
6
7
  const {
@@ -14,15 +15,69 @@ export const Menu = /*#__PURE__*/forwardRef(function Menu(props, forwardedRef) {
14
15
  const menuListIdRef = useRef(undefined);
15
16
  const openWithArrowKeyRef = useRef(null);
16
17
  const buttonRef = useRef(null);
17
- const [open, onChange] = useControlledState(openProp, onChangeProp, defaultOpen, setState => (e, isOpen) => {
18
+ const didNotifyDefaultOpenRef = useRef(false);
19
+ const menuBar = useOptionalMenuBarContext();
20
+ const menuBarMenuId = useId();
21
+ const parentMenu = useOptionalMenuContext();
22
+ const isMenuBarRootMenu = Boolean(menuBar && !parentMenu);
23
+ const menuBarOpenMenuId = menuBar?.openMenuId;
24
+ const notifyMenuBarOpenChange = menuBar?.notifyMenuOpenChange;
25
+ const registerMenuBarMenu = menuBar?.registerMenu;
26
+ const [openState, setOpenState] = useControlledState(openProp, onChangeProp, defaultOpen, setState => (e, isOpen) => {
18
27
  setState(isOpen);
19
28
  });
20
29
  const [offsetFn, setOffsetFn] = useState(undefined);
21
30
  menuListIdRef.current = useId();
22
31
  const isContextMenu = useRef(false);
32
+ const open = isMenuBarRootMenu && openProp === undefined ? menuBarOpenMenuId === menuBarMenuId : openState;
33
+ const onChange = useCallback((e, isOpen) => {
34
+ setOpenState(e, isOpen);
35
+ if (isMenuBarRootMenu && notifyMenuBarOpenChange) {
36
+ notifyMenuBarOpenChange(menuBarMenuId, isOpen);
37
+ }
38
+ }, [isMenuBarRootMenu, menuBarMenuId, notifyMenuBarOpenChange, setOpenState]);
39
+ useEffect(() => {
40
+ if (!isMenuBarRootMenu || !registerMenuBarMenu) {
41
+ return;
42
+ }
43
+ return registerMenuBarMenu({
44
+ id: menuBarMenuId,
45
+ openWithArrowKeyRef,
46
+ onOpenChange: onChange
47
+ });
48
+ }, [isMenuBarRootMenu, menuBarMenuId, onChange, registerMenuBarMenu]);
49
+ useEffect(() => {
50
+ if (!isMenuBarRootMenu || !notifyMenuBarOpenChange) {
51
+ return;
52
+ }
53
+ if (openProp !== undefined) {
54
+ notifyMenuBarOpenChange(menuBarMenuId, open);
55
+ return;
56
+ }
57
+ if (defaultOpen && !didNotifyDefaultOpenRef.current) {
58
+ didNotifyDefaultOpenRef.current = true;
59
+ notifyMenuBarOpenChange(menuBarMenuId, true);
60
+ }
61
+ }, [defaultOpen, isMenuBarRootMenu, menuBarMenuId, notifyMenuBarOpenChange, open, openProp]);
23
62
  if (!open && offsetFn) {
24
63
  setOffsetFn(undefined);
25
64
  }
65
+ const closeMenu = (e, options) => {
66
+ onChange(e, false);
67
+ if (options?.focusTrigger && !isContextMenu.current) {
68
+ buttonRef.current?.focus();
69
+ }
70
+ };
71
+ const closeAllMenus = e => {
72
+ onChange(e, false);
73
+ if (parentMenu) {
74
+ parentMenu.closeAllMenus(e);
75
+ return;
76
+ }
77
+ if (!isContextMenu.current) {
78
+ buttonRef.current?.focus();
79
+ }
80
+ };
26
81
  const value = {
27
82
  menuListIdRef,
28
83
  openWithArrowKeyRef,
@@ -31,7 +86,12 @@ export const Menu = /*#__PURE__*/forwardRef(function Menu(props, forwardedRef) {
31
86
  buttonRef,
32
87
  offsetFn,
33
88
  setOffsetFn,
34
- isContextMenu
89
+ isContextMenu,
90
+ parentMenu,
91
+ menuBar: isMenuBarRootMenu ? menuBar : null,
92
+ menuBarMenuId: isMenuBarRootMenu ? menuBarMenuId : null,
93
+ closeMenu,
94
+ closeAllMenus
35
95
  };
36
96
  return /*#__PURE__*/_jsx(MenuProvider, {
37
97
  value: value,
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.js","names":["useState","forwardRef","useRef","Fragment","useId","MenuProvider","useControlledState","jsx","_jsx","Menu","props","forwardedRef","as","Comp","innerAs","open","openProp","defaultOpen","onChange","onChangeProp","otherProps","menuListIdRef","undefined","openWithArrowKeyRef","buttonRef","setState","e","isOpen","offsetFn","setOffsetFn","current","isContextMenu","value","children","ref"],"sources":["../../../src/Menu/Menu.tsx"],"sourcesContent":["import type {\n KeyboardEvent,\n MouseEvent,\n PointerEvent,\n ReactNode,\n ElementType,\n} from 'react';\nimport { useState, forwardRef, useRef, Fragment, useId } from 'react';\n\nimport type { MenuContextProps } from './context';\nimport { MenuProvider } from './context';\nimport { useControlledState } from '../hooks';\nimport type { OffsetsFunction } from '../Popper';\n\nexport interface MenuProps {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n children?: ReactNode;\n onChange?: (\n e:\n | KeyboardEvent<HTMLElement>\n | MouseEvent<HTMLElement>\n | PointerEvent<HTMLElement>,\n isOpen: boolean\n ) => void;\n open?: boolean;\n defaultOpen?: boolean;\n}\n\nexport const Menu = forwardRef<HTMLDivElement, MenuProps>(function Menu(\n props,\n forwardedRef\n) {\n const {\n as: Comp = Fragment,\n innerAs,\n open: openProp,\n defaultOpen = false,\n onChange: onChangeProp,\n ...otherProps\n } = props;\n const menuListIdRef = useRef<string | undefined>(undefined);\n const openWithArrowKeyRef = useRef<'ArrowUp' | 'ArrowDown' | null>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const [open, onChange] = useControlledState(\n openProp,\n onChangeProp,\n defaultOpen,\n (setState) => (e, isOpen) => {\n setState(isOpen);\n }\n );\n const [offsetFn, setOffsetFn] = useState<OffsetsFunction | undefined>(\n undefined\n );\n menuListIdRef.current = useId();\n const isContextMenu = useRef(false);\n\n if (!open && offsetFn) {\n setOffsetFn(undefined);\n }\n\n const value: MenuContextProps = {\n menuListIdRef,\n openWithArrowKeyRef,\n open,\n onChange,\n buttonRef,\n offsetFn,\n setOffsetFn,\n isContextMenu,\n };\n\n return (\n <MenuProvider value={value}>\n <Comp\n {...(Comp !== Fragment ? { as: innerAs, ref: forwardedRef } : {})}\n {...otherProps}\n />\n </MenuProvider>\n );\n});\n"],"mappings":"AAOA,SAASA,QAAQ,EAAEC,UAAU,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,KAAK,QAAQ,OAAO;AAGrE,SAASC,YAAY,QAAQ,WAAW;AACxC,SAASC,kBAAkB,QAAQ,UAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAkB9C,OAAO,MAAMC,IAAI,gBAAGR,UAAU,CAA4B,SAASQ,IAAIA,CACrEC,KAAK,EACLC,YAAY,EACZ;EACA,MAAM;IACJC,EAAE,EAAEC,IAAI,GAAGV,QAAQ;IACnBW,OAAO;IACPC,IAAI,EAAEC,QAAQ;IACdC,WAAW,GAAG,KAAK;IACnBC,QAAQ,EAAEC,YAAY;IACtB,GAAGC;EACL,CAAC,GAAGV,KAAK;EACT,MAAMW,aAAa,GAAGnB,MAAM,CAAqBoB,SAAS,CAAC;EAC3D,MAAMC,mBAAmB,GAAGrB,MAAM,CAAiC,IAAI,CAAC;EACxE,MAAMsB,SAAS,GAAGtB,MAAM,CAAoB,IAAI,CAAC;EACjD,MAAM,CAACa,IAAI,EAAEG,QAAQ,CAAC,GAAGZ,kBAAkB,CACzCU,QAAQ,EACRG,YAAY,EACZF,WAAW,EACVQ,QAAQ,IAAK,CAACC,CAAC,EAAEC,MAAM,KAAK;IAC3BF,QAAQ,CAACE,MAAM,CAAC;EAClB,CACF,CAAC;EACD,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAG7B,QAAQ,CACtCsB,SACF,CAAC;EACDD,aAAa,CAACS,OAAO,GAAG1B,KAAK,CAAC,CAAC;EAC/B,MAAM2B,aAAa,GAAG7B,MAAM,CAAC,KAAK,CAAC;EAEnC,IAAI,CAACa,IAAI,IAAIa,QAAQ,EAAE;IACrBC,WAAW,CAACP,SAAS,CAAC;EACxB;EAEA,MAAMU,KAAuB,GAAG;IAC9BX,aAAa;IACbE,mBAAmB;IACnBR,IAAI;IACJG,QAAQ;IACRM,SAAS;IACTI,QAAQ;IACRC,WAAW;IACXE;EACF,CAAC;EAED,oBACEvB,IAAA,CAACH,YAAY;IAAC2B,KAAK,EAAEA,KAAM;IAAAC,QAAA,eACzBzB,IAAA,CAACK,IAAI;MAAA,IACEA,IAAI,KAAKV,QAAQ,GAAG;QAAES,EAAE,EAAEE,OAAO;QAAEoB,GAAG,EAAEvB;MAAa,CAAC,GAAG,CAAC,CAAC;MAAA,GAC5DS;IAAU,CACf;EAAC,CACU,CAAC;AAEnB,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"Menu.js","names":["useState","forwardRef","useRef","Fragment","useId","useCallback","useEffect","MenuProvider","useOptionalMenuContext","useControlledState","useOptionalMenuBarContext","jsx","_jsx","Menu","props","forwardedRef","as","Comp","innerAs","open","openProp","defaultOpen","onChange","onChangeProp","otherProps","menuListIdRef","undefined","openWithArrowKeyRef","buttonRef","didNotifyDefaultOpenRef","menuBar","menuBarMenuId","parentMenu","isMenuBarRootMenu","Boolean","menuBarOpenMenuId","openMenuId","notifyMenuBarOpenChange","notifyMenuOpenChange","registerMenuBarMenu","registerMenu","openState","setOpenState","setState","e","isOpen","offsetFn","setOffsetFn","current","isContextMenu","id","onOpenChange","closeMenu","options","focusTrigger","focus","closeAllMenus","value","children","ref"],"sources":["../../../src/Menu/Menu.tsx"],"sourcesContent":["import type { ReactNode, ElementType } from 'react';\nimport {\n useState,\n forwardRef,\n useRef,\n Fragment,\n useId,\n useCallback,\n useEffect,\n} from 'react';\n\nimport type { MenuContextProps, MenuTriggerEvent } from './context';\nimport { MenuProvider, useOptionalMenuContext } from './context';\nimport { useControlledState } from '../hooks';\nimport type { OffsetsFunction } from '../Popper';\nimport { useOptionalMenuBarContext } from '../MenuBar/context';\n\nexport interface MenuProps {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n children?: ReactNode;\n onChange?: (e: MenuTriggerEvent, isOpen: boolean) => void;\n open?: boolean;\n defaultOpen?: boolean;\n}\n\nexport const Menu = forwardRef<HTMLDivElement, MenuProps>(\n function Menu(props, forwardedRef) {\n const {\n as: Comp = Fragment,\n innerAs,\n open: openProp,\n defaultOpen = false,\n onChange: onChangeProp,\n ...otherProps\n } = props;\n const menuListIdRef = useRef<string | undefined>(undefined);\n const openWithArrowKeyRef = useRef<'ArrowUp' | 'ArrowDown' | null>(null);\n const buttonRef = useRef<HTMLElement>(null);\n const didNotifyDefaultOpenRef = useRef(false);\n const menuBar = useOptionalMenuBarContext();\n const menuBarMenuId = useId();\n const parentMenu = useOptionalMenuContext();\n const isMenuBarRootMenu = Boolean(menuBar && !parentMenu);\n const menuBarOpenMenuId = menuBar?.openMenuId;\n const notifyMenuBarOpenChange = menuBar?.notifyMenuOpenChange;\n const registerMenuBarMenu = menuBar?.registerMenu;\n const [openState, setOpenState] = useControlledState(\n openProp,\n onChangeProp,\n defaultOpen,\n (setState) => (e, isOpen) => {\n setState(isOpen);\n }\n );\n const [offsetFn, setOffsetFn] = useState<OffsetsFunction | undefined>(\n undefined\n );\n menuListIdRef.current = useId();\n const isContextMenu = useRef(false);\n const open =\n isMenuBarRootMenu && openProp === undefined\n ? menuBarOpenMenuId === menuBarMenuId\n : openState;\n\n const onChange = useCallback(\n (e: MenuTriggerEvent, isOpen: boolean) => {\n setOpenState(e, isOpen);\n if (isMenuBarRootMenu && notifyMenuBarOpenChange) {\n notifyMenuBarOpenChange(menuBarMenuId, isOpen);\n }\n },\n [isMenuBarRootMenu, menuBarMenuId, notifyMenuBarOpenChange, setOpenState]\n );\n\n useEffect(() => {\n if (!isMenuBarRootMenu || !registerMenuBarMenu) {\n return;\n }\n\n return registerMenuBarMenu({\n id: menuBarMenuId,\n openWithArrowKeyRef,\n onOpenChange: onChange,\n });\n }, [isMenuBarRootMenu, menuBarMenuId, onChange, registerMenuBarMenu]);\n\n useEffect(() => {\n if (!isMenuBarRootMenu || !notifyMenuBarOpenChange) {\n return;\n }\n\n if (openProp !== undefined) {\n notifyMenuBarOpenChange(menuBarMenuId, open);\n return;\n }\n\n if (defaultOpen && !didNotifyDefaultOpenRef.current) {\n didNotifyDefaultOpenRef.current = true;\n notifyMenuBarOpenChange(menuBarMenuId, true);\n }\n }, [\n defaultOpen,\n isMenuBarRootMenu,\n menuBarMenuId,\n notifyMenuBarOpenChange,\n open,\n openProp,\n ]);\n\n if (!open && offsetFn) {\n setOffsetFn(undefined);\n }\n\n const closeMenu: MenuContextProps['closeMenu'] = (e, options) => {\n onChange(e, false);\n if (options?.focusTrigger && !isContextMenu.current) {\n buttonRef.current?.focus();\n }\n };\n\n const closeAllMenus: MenuContextProps['closeAllMenus'] = (e) => {\n onChange(e, false);\n if (parentMenu) {\n parentMenu.closeAllMenus(e);\n return;\n }\n if (!isContextMenu.current) {\n buttonRef.current?.focus();\n }\n };\n\n const value: MenuContextProps = {\n menuListIdRef,\n openWithArrowKeyRef,\n open,\n onChange,\n buttonRef,\n offsetFn,\n setOffsetFn,\n isContextMenu,\n parentMenu,\n menuBar: isMenuBarRootMenu ? menuBar! : null,\n menuBarMenuId: isMenuBarRootMenu ? menuBarMenuId : null,\n closeMenu,\n closeAllMenus,\n };\n\n return (\n <MenuProvider value={value}>\n <Comp\n {...(Comp !== Fragment ? { as: innerAs, ref: forwardedRef } : {})}\n {...otherProps}\n />\n </MenuProvider>\n );\n }\n);\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuButton.d.ts","sourceRoot":"","sources":["../../../src/Menu/MenuButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,UAAU,EACX,MAAM,OAAO,CAAC;AAMf,MAAM,MAAM,eAAe,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,GAAG;IACtE,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,CACR,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,aAAa,CAAC,iBAAiB,CAAC,KAChE,IAAI,CAAC;CACX,CAAC;AAEF,eAAO,MAAM,UAAU;SAPhB,WAAW,CAAC,GAAG,CAAC;cACX,WAAW,CAAC,GAAG,CAAC;cAChB,CACR,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,aAAa,CAAC,iBAAiB,CAAC,KAChE,IAAI;qDAkEV,CAAC"}
1
+ {"version":3,"file":"MenuButton.d.ts","sourceRoot":"","sources":["../../../src/Menu/MenuButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,WAAW,EACX,aAAa,EAEb,UAAU,EACX,MAAM,OAAO,CAAC;AAOf,MAAM,MAAM,eAAe,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,GAAG;IACtE,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,CACR,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,aAAa,CAAC,iBAAiB,CAAC,KAChE,IAAI,CAAC;CACX,CAAC;AAEF,eAAO,MAAM,UAAU;SAPhB,WAAW,CAAC,GAAG,CAAC;cACX,WAAW,CAAC,GAAG,CAAC;cAChB,CACR,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,aAAa,CAAC,iBAAiB,CAAC,KAChE,IAAI;qDA0KV,CAAC"}
@@ -1,6 +1,7 @@
1
- import { forwardRef, useId } from 'react';
1
+ import { forwardRef, useCallback, useId } from 'react';
2
2
  import { useMenuContext } from './context';
3
3
  import { wrapEvent } from '../utils/wrap-event';
4
+ import { assignRef } from '../utils/assign-ref';
4
5
  import { jsx as _jsx } from "react/jsx-runtime";
5
6
  export const MenuButton = /*#__PURE__*/forwardRef(function MenuButton(props, forwardedRef) {
6
7
  const {
@@ -8,7 +9,9 @@ export const MenuButton = /*#__PURE__*/forwardRef(function MenuButton(props, for
8
9
  innerAs,
9
10
  id: preferredId,
10
11
  onClick,
12
+ onFocus,
11
13
  onKeyDown,
14
+ onMouseMove,
12
15
  disabled,
13
16
  ...otherProps
14
17
  } = props;
@@ -17,15 +20,61 @@ export const MenuButton = /*#__PURE__*/forwardRef(function MenuButton(props, for
17
20
  openWithArrowKeyRef,
18
21
  open,
19
22
  buttonRef,
20
- onChange
23
+ onChange,
24
+ menuBar,
25
+ menuBarMenuId
21
26
  } = useMenuContext();
22
27
  const buttonIdGenerated = useId();
23
28
  const buttonId = preferredId || buttonIdGenerated;
29
+ const isMenuBarButton = Boolean(menuBar && menuBarMenuId);
30
+ const isDisabled = Boolean(disabled || menuBar?.disabled);
31
+ const registerButton = menuBar?.registerButton;
32
+ const setButtonRef = useCallback(node => {
33
+ assignRef(forwardedRef, node);
34
+ assignRef(buttonRef, node);
35
+ if (isMenuBarButton && registerButton) {
36
+ registerButton(menuBarMenuId, node, isDisabled);
37
+ }
38
+ }, [buttonRef, forwardedRef, isDisabled, isMenuBarButton, menuBarMenuId, registerButton]);
24
39
  const handleKeyDown = e => {
25
- if (disabled) {
40
+ if (isDisabled) {
26
41
  return;
27
42
  }
28
43
  buttonRef.current = e.currentTarget;
44
+ if (isMenuBarButton) {
45
+ const isHorizontal = menuBar.orientation === 'horizontal';
46
+ const nextKey = isHorizontal ? 'ArrowRight' : 'ArrowDown';
47
+ const previousKey = isHorizontal ? 'ArrowLeft' : 'ArrowUp';
48
+ const firstMenuKey = 'Home';
49
+ const lastMenuKey = 'End';
50
+ const openFirstItemKey = isHorizontal ? 'ArrowDown' : 'ArrowRight';
51
+ const openLastItemKey = isHorizontal ? 'ArrowUp' : undefined;
52
+ switch (e.key) {
53
+ case nextKey:
54
+ case previousKey:
55
+ menuBar.moveFocus(menuBarMenuId, e.key === nextKey ? 1 : -1, e, {
56
+ open: menuBar.openMenuId !== null,
57
+ focusKey: 'ArrowDown'
58
+ });
59
+ e.preventDefault();
60
+ return;
61
+ case firstMenuKey:
62
+ menuBar.focusFirstMenu();
63
+ e.preventDefault();
64
+ return;
65
+ case lastMenuKey:
66
+ menuBar.focusLastMenu();
67
+ e.preventDefault();
68
+ return;
69
+ case openFirstItemKey:
70
+ case openLastItemKey:
71
+ const focusKey = e.key === 'ArrowUp' ? 'ArrowUp' : 'ArrowDown';
72
+ openWithArrowKeyRef.current = focusKey;
73
+ menuBar.openMenu(menuBarMenuId, e, focusKey);
74
+ e.preventDefault();
75
+ return;
76
+ }
77
+ }
29
78
  const isArrowKey = () => ['ArrowUp', 'ArrowDown'].includes(e.key);
30
79
  const isEnterKey = () => [' ', 'Enter'].includes(e.key);
31
80
  const openedWithArrow = isArrowKey();
@@ -39,25 +88,53 @@ export const MenuButton = /*#__PURE__*/forwardRef(function MenuButton(props, for
39
88
  }
40
89
  };
41
90
  const handleClick = e => {
42
- if (disabled) {
91
+ if (isDisabled) {
43
92
  return;
44
93
  }
45
94
  buttonRef.current = e.currentTarget;
95
+ if (isMenuBarButton) {
96
+ menuBar.setActiveMenuId(menuBarMenuId);
97
+ if (open) {
98
+ menuBar.closeMenu(menuBarMenuId, e);
99
+ } else {
100
+ menuBar.openMenu(menuBarMenuId, e);
101
+ }
102
+ return;
103
+ }
46
104
  onChange(e, !open);
47
105
  };
106
+ const handleFocus = e => {
107
+ if (!isDisabled && isMenuBarButton) {
108
+ menuBar.setActiveMenuId(menuBarMenuId);
109
+ buttonRef.current = e.currentTarget;
110
+ }
111
+ };
112
+ const handleMouseMove = e => {
113
+ if (!isDisabled && isMenuBarButton) {
114
+ menuBar.setActiveMenuId(menuBarMenuId);
115
+ buttonRef.current = e.currentTarget;
116
+ if (menuBar.openMenuId && menuBar.openMenuId !== menuBarMenuId) {
117
+ menuBar.openMenu(menuBarMenuId, e);
118
+ }
119
+ }
120
+ };
48
121
  return /*#__PURE__*/_jsx(Comp, {
49
- ref: forwardedRef,
122
+ ref: setButtonRef,
50
123
  as: innerAs,
51
124
  id: buttonId,
52
- role: "button",
125
+ role: isMenuBarButton ? 'menuitem' : 'button',
53
126
  type: "button",
54
- "aria-haspopup": true,
127
+ "aria-haspopup": isMenuBarButton ? 'menu' : true,
55
128
  "aria-controls": menuListIdRef.current,
56
129
  "aria-expanded": open ? true : undefined,
57
130
  "data-menu-button": "",
131
+ "data-menubar-menu-button": isMenuBarButton ? '' : undefined,
132
+ tabIndex: isMenuBarButton ? menuBar.activeMenuId === menuBarMenuId ? 0 : -1 : undefined,
58
133
  onClick: wrapEvent(onClick, handleClick),
134
+ onFocus: wrapEvent(onFocus, handleFocus),
59
135
  onKeyDown: wrapEvent(onKeyDown, handleKeyDown),
60
- disabled: disabled,
136
+ onMouseMove: wrapEvent(onMouseMove, handleMouseMove),
137
+ disabled: isDisabled,
61
138
  ...otherProps
62
139
  });
63
140
  });
@@ -1 +1 @@
1
- {"version":3,"file":"MenuButton.js","names":["forwardRef","useId","useMenuContext","wrapEvent","jsx","_jsx","MenuButton","props","forwardedRef","as","Comp","innerAs","id","preferredId","onClick","onKeyDown","disabled","otherProps","menuListIdRef","openWithArrowKeyRef","open","buttonRef","onChange","buttonIdGenerated","buttonId","handleKeyDown","e","current","currentTarget","isArrowKey","includes","key","isEnterKey","openedWithArrow","preventDefault","handleClick","ref","role","type","undefined"],"sources":["../../../src/Menu/MenuButton.tsx"],"sourcesContent":["import type {\n ButtonHTMLAttributes,\n ElementType,\n KeyboardEvent,\n MouseEvent,\n} from 'react';\nimport { forwardRef, useId } from 'react';\n\nimport { useMenuContext } from './context';\nimport { wrapEvent } from '../utils/wrap-event';\n\nexport type MenuButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n onClick?: (\n e: MouseEvent<HTMLButtonElement> | KeyboardEvent<HTMLButtonElement>\n ) => void;\n};\n\nexport const MenuButton = forwardRef<HTMLButtonElement, MenuButtonProps>(\n function MenuButton(props, forwardedRef) {\n const {\n as: Comp = 'button',\n innerAs,\n id: preferredId,\n onClick,\n onKeyDown,\n disabled,\n ...otherProps\n } = props;\n const { menuListIdRef, openWithArrowKeyRef, open, buttonRef, onChange } =\n useMenuContext();\n\n const buttonIdGenerated = useId();\n const buttonId = preferredId || buttonIdGenerated;\n\n const handleKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {\n if (disabled) {\n return;\n }\n buttonRef.current = e.currentTarget;\n\n const isArrowKey = () => ['ArrowUp', 'ArrowDown'].includes(e.key);\n const isEnterKey = () => [' ', 'Enter'].includes(e.key);\n\n const openedWithArrow = isArrowKey();\n if (openedWithArrow || isEnterKey()) {\n if (openedWithArrow) {\n // Used to make it open at the end or begining of the list\n openWithArrowKeyRef.current = e.key;\n }\n onChange(e, true);\n e.preventDefault();\n }\n };\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n return;\n }\n buttonRef.current = e.currentTarget;\n onChange(e, !open);\n };\n\n return (\n <Comp\n ref={forwardedRef}\n as={innerAs}\n id={buttonId}\n role=\"button\"\n type=\"button\"\n aria-haspopup={true}\n aria-controls={menuListIdRef.current}\n aria-expanded={open ? true : undefined}\n data-menu-button=\"\"\n onClick={wrapEvent(onClick, handleClick)}\n onKeyDown={wrapEvent(onKeyDown, handleKeyDown)}\n disabled={disabled}\n {...otherProps}\n />\n );\n }\n);\n"],"mappings":"AAMA,SAASA,UAAU,EAAEC,KAAK,QAAQ,OAAO;AAEzC,SAASC,cAAc,QAAQ,WAAW;AAC1C,SAASC,SAAS,QAAQ,qBAAqB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAUhD,OAAO,MAAMC,UAAU,gBAAGN,UAAU,CAClC,SAASM,UAAUA,CAACC,KAAK,EAAEC,YAAY,EAAE;EACvC,MAAM;IACJC,EAAE,EAAEC,IAAI,GAAG,QAAQ;IACnBC,OAAO;IACPC,EAAE,EAAEC,WAAW;IACfC,OAAO;IACPC,SAAS;IACTC,QAAQ;IACR,GAAGC;EACL,CAAC,GAAGV,KAAK;EACT,MAAM;IAAEW,aAAa;IAAEC,mBAAmB;IAAEC,IAAI;IAAEC,SAAS;IAAEC;EAAS,CAAC,GACrEpB,cAAc,CAAC,CAAC;EAElB,MAAMqB,iBAAiB,GAAGtB,KAAK,CAAC,CAAC;EACjC,MAAMuB,QAAQ,GAAGX,WAAW,IAAIU,iBAAiB;EAEjD,MAAME,aAAa,GAAIC,CAAmC,IAAK;IAC7D,IAAIV,QAAQ,EAAE;MACZ;IACF;IACAK,SAAS,CAACM,OAAO,GAAGD,CAAC,CAACE,aAAa;IAEnC,MAAMC,UAAU,GAAGA,CAAA,KAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAACC,QAAQ,CAACJ,CAAC,CAACK,GAAG,CAAC;IACjE,MAAMC,UAAU,GAAGA,CAAA,KAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAACF,QAAQ,CAACJ,CAAC,CAACK,GAAG,CAAC;IAEvD,MAAME,eAAe,GAAGJ,UAAU,CAAC,CAAC;IACpC,IAAII,eAAe,IAAID,UAAU,CAAC,CAAC,EAAE;MACnC,IAAIC,eAAe,EAAE;QACnB;QACAd,mBAAmB,CAACQ,OAAO,GAAGD,CAAC,CAACK,GAAG;MACrC;MACAT,QAAQ,CAACI,CAAC,EAAE,IAAI,CAAC;MACjBA,CAAC,CAACQ,cAAc,CAAC,CAAC;IACpB;EACF,CAAC;EAED,MAAMC,WAAW,GAAIT,CAAgC,IAAK;IACxD,IAAIV,QAAQ,EAAE;MACZ;IACF;IACAK,SAAS,CAACM,OAAO,GAAGD,CAAC,CAACE,aAAa;IACnCN,QAAQ,CAACI,CAAC,EAAE,CAACN,IAAI,CAAC;EACpB,CAAC;EAED,oBACEf,IAAA,CAACK,IAAI;IACH0B,GAAG,EAAE5B,YAAa;IAClBC,EAAE,EAAEE,OAAQ;IACZC,EAAE,EAAEY,QAAS;IACba,IAAI,EAAC,QAAQ;IACbC,IAAI,EAAC,QAAQ;IACb,iBAAe,IAAK;IACpB,iBAAepB,aAAa,CAACS,OAAQ;IACrC,iBAAeP,IAAI,GAAG,IAAI,GAAGmB,SAAU;IACvC,oBAAiB,EAAE;IACnBzB,OAAO,EAAEX,SAAS,CAACW,OAAO,EAAEqB,WAAW,CAAE;IACzCpB,SAAS,EAAEZ,SAAS,CAACY,SAAS,EAAEU,aAAa,CAAE;IAC/CT,QAAQ,EAAEA,QAAS;IAAA,GACfC;EAAU,CACf,CAAC;AAEN,CACF,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"MenuButton.js","names":["forwardRef","useCallback","useId","useMenuContext","wrapEvent","assignRef","jsx","_jsx","MenuButton","props","forwardedRef","as","Comp","innerAs","id","preferredId","onClick","onFocus","onKeyDown","onMouseMove","disabled","otherProps","menuListIdRef","openWithArrowKeyRef","open","buttonRef","onChange","menuBar","menuBarMenuId","buttonIdGenerated","buttonId","isMenuBarButton","Boolean","isDisabled","registerButton","setButtonRef","node","handleKeyDown","e","current","currentTarget","isHorizontal","orientation","nextKey","previousKey","firstMenuKey","lastMenuKey","openFirstItemKey","openLastItemKey","undefined","key","moveFocus","openMenuId","focusKey","preventDefault","focusFirstMenu","focusLastMenu","openMenu","isArrowKey","includes","isEnterKey","openedWithArrow","handleClick","setActiveMenuId","closeMenu","handleFocus","handleMouseMove","ref","role","type","tabIndex","activeMenuId"],"sources":["../../../src/Menu/MenuButton.tsx"],"sourcesContent":["import type {\n ButtonHTMLAttributes,\n ElementType,\n KeyboardEvent,\n FocusEvent,\n MouseEvent,\n} from 'react';\nimport { forwardRef, useCallback, useId } from 'react';\n\nimport { useMenuContext } from './context';\nimport { wrapEvent } from '../utils/wrap-event';\nimport { assignRef } from '../utils/assign-ref';\n\nexport type MenuButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n onClick?: (\n e: MouseEvent<HTMLButtonElement> | KeyboardEvent<HTMLButtonElement>\n ) => void;\n};\n\nexport const MenuButton = forwardRef<HTMLButtonElement, MenuButtonProps>(\n function MenuButton(props, forwardedRef) {\n const {\n as: Comp = 'button',\n innerAs,\n id: preferredId,\n onClick,\n onFocus,\n onKeyDown,\n onMouseMove,\n disabled,\n ...otherProps\n } = props;\n const {\n menuListIdRef,\n openWithArrowKeyRef,\n open,\n buttonRef,\n onChange,\n menuBar,\n menuBarMenuId,\n } = useMenuContext();\n\n const buttonIdGenerated = useId();\n const buttonId = preferredId || buttonIdGenerated;\n const isMenuBarButton = Boolean(menuBar && menuBarMenuId);\n const isDisabled = Boolean(disabled || menuBar?.disabled);\n const registerButton = menuBar?.registerButton;\n\n const setButtonRef = useCallback(\n (node: HTMLButtonElement | null) => {\n assignRef(forwardedRef, node);\n assignRef(buttonRef, node);\n\n if (isMenuBarButton && registerButton) {\n registerButton(menuBarMenuId!, node, isDisabled);\n }\n },\n [\n buttonRef,\n forwardedRef,\n isDisabled,\n isMenuBarButton,\n menuBarMenuId,\n registerButton,\n ]\n );\n\n const handleKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n return;\n }\n buttonRef.current = e.currentTarget;\n\n if (isMenuBarButton) {\n const isHorizontal = menuBar!.orientation === 'horizontal';\n const nextKey = isHorizontal ? 'ArrowRight' : 'ArrowDown';\n const previousKey = isHorizontal ? 'ArrowLeft' : 'ArrowUp';\n const firstMenuKey = 'Home';\n const lastMenuKey = 'End';\n const openFirstItemKey = isHorizontal ? 'ArrowDown' : 'ArrowRight';\n const openLastItemKey = isHorizontal ? 'ArrowUp' : undefined;\n\n switch (e.key) {\n case nextKey:\n case previousKey:\n menuBar!.moveFocus(menuBarMenuId!, e.key === nextKey ? 1 : -1, e, {\n open: menuBar!.openMenuId !== null,\n focusKey: 'ArrowDown',\n });\n e.preventDefault();\n return;\n case firstMenuKey:\n menuBar!.focusFirstMenu();\n e.preventDefault();\n return;\n case lastMenuKey:\n menuBar!.focusLastMenu();\n e.preventDefault();\n return;\n case openFirstItemKey:\n case openLastItemKey:\n const focusKey = e.key === 'ArrowUp' ? 'ArrowUp' : 'ArrowDown';\n openWithArrowKeyRef.current = focusKey;\n menuBar!.openMenu(menuBarMenuId!, e, focusKey);\n e.preventDefault();\n return;\n }\n }\n\n const isArrowKey = () => ['ArrowUp', 'ArrowDown'].includes(e.key);\n const isEnterKey = () => [' ', 'Enter'].includes(e.key);\n\n const openedWithArrow = isArrowKey();\n if (openedWithArrow || isEnterKey()) {\n if (openedWithArrow) {\n // Used to make it open at the end or begining of the list\n openWithArrowKeyRef.current = e.key;\n }\n onChange(e, true);\n e.preventDefault();\n }\n };\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n return;\n }\n buttonRef.current = e.currentTarget;\n if (isMenuBarButton) {\n menuBar!.setActiveMenuId(menuBarMenuId!);\n if (open) {\n menuBar!.closeMenu(menuBarMenuId!, e);\n } else {\n menuBar!.openMenu(menuBarMenuId!, e);\n }\n return;\n }\n onChange(e, !open);\n };\n\n const handleFocus = (e: FocusEvent<HTMLButtonElement>) => {\n if (!isDisabled && isMenuBarButton) {\n menuBar!.setActiveMenuId(menuBarMenuId!);\n buttonRef.current = e.currentTarget;\n }\n };\n\n const handleMouseMove = (e: MouseEvent<HTMLButtonElement>) => {\n if (!isDisabled && isMenuBarButton) {\n menuBar!.setActiveMenuId(menuBarMenuId!);\n buttonRef.current = e.currentTarget;\n\n if (menuBar!.openMenuId && menuBar!.openMenuId !== menuBarMenuId) {\n menuBar!.openMenu(menuBarMenuId!, e);\n }\n }\n };\n\n return (\n <Comp\n ref={setButtonRef}\n as={innerAs}\n id={buttonId}\n role={isMenuBarButton ? 'menuitem' : 'button'}\n type=\"button\"\n aria-haspopup={isMenuBarButton ? 'menu' : true}\n aria-controls={menuListIdRef.current}\n aria-expanded={open ? true : undefined}\n data-menu-button=\"\"\n data-menubar-menu-button={isMenuBarButton ? '' : undefined}\n tabIndex={\n isMenuBarButton\n ? menuBar!.activeMenuId === menuBarMenuId\n ? 0\n : -1\n : undefined\n }\n onClick={wrapEvent(onClick, handleClick)}\n onFocus={wrapEvent(onFocus, handleFocus)}\n onKeyDown={wrapEvent(onKeyDown, handleKeyDown)}\n onMouseMove={wrapEvent(onMouseMove, handleMouseMove)}\n disabled={isDisabled}\n {...otherProps}\n />\n );\n }\n);\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItem.d.ts","sourceRoot":"","sources":["../../../src/Menu/MenuItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,aAAa,EAEd,MAAM,OAAO,CAAC;AAOf,MAAM,WAAW,aAAc,SAAQ,gBAAgB,CAAC,aAAa,CAAC;IACpE,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3B,QAAQ,CAAC,EAAE,CACT,CAAC,EAAE,UAAU,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC,aAAa,CAAC,KACxD,IAAI,CAAC;IACV,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,QAAQ,+FAgEnB,CAAC"}
1
+ {"version":3,"file":"MenuItem.d.ts","sourceRoot":"","sources":["../../../src/Menu/MenuItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,aAAa,EAGd,MAAM,OAAO,CAAC;AAOf,MAAM,WAAW,aAAc,SAAQ,gBAAgB,CAAC,aAAa,CAAC;IACpE,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3B,QAAQ,CAAC,EAAE,CACT,CAAC,EAAE,UAAU,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC,aAAa,CAAC,KACxD,IAAI,CAAC;IACV,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,QAAQ,+FA+EnB,CAAC"}