@basic-ui/core 0.0.60 → 0.0.61
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.
- package/build/cjs/index.js.map +1 -1
- package/build/esm/Accordion/AccordionBody.d.ts.map +1 -1
- package/build/esm/Accordion/AccordionBody.js +6 -26
- package/build/esm/Accordion/AccordionBody.js.map +1 -1
- package/build/esm/Accordion/AccordionHeader.d.ts.map +1 -1
- package/build/esm/Accordion/AccordionHeader.js +21 -69
- package/build/esm/Accordion/AccordionHeader.js.map +1 -1
- package/build/esm/Accordion/AccordionItem.d.ts.map +1 -1
- package/build/esm/Accordion/AccordionItem.js +31 -18
- package/build/esm/Accordion/AccordionItem.js.map +1 -1
- package/build/esm/Accordion/context.d.ts +0 -8
- package/build/esm/Accordion/context.d.ts.map +1 -1
- package/build/esm/Accordion/context.js +0 -11
- package/build/esm/Accordion/context.js.map +1 -1
- package/build/esm/Accordion/scopeQuery.d.ts +1 -0
- package/build/esm/Accordion/scopeQuery.d.ts.map +1 -1
- package/build/esm/Accordion/scopeQuery.js +3 -0
- package/build/esm/Accordion/scopeQuery.js.map +1 -1
- package/build/esm/Collapsible/Collapsible.d.ts +13 -0
- package/build/esm/Collapsible/Collapsible.d.ts.map +1 -0
- package/build/esm/Collapsible/Collapsible.js +53 -0
- package/build/esm/Collapsible/Collapsible.js.map +1 -0
- package/build/esm/Collapsible/CollapsiblePanel.d.ts +10 -0
- package/build/esm/Collapsible/CollapsiblePanel.d.ts.map +1 -0
- package/build/esm/Collapsible/CollapsiblePanel.js +85 -0
- package/build/esm/Collapsible/CollapsiblePanel.js.map +1 -0
- package/build/esm/Collapsible/CollapsibleTrigger.d.ts +11 -0
- package/build/esm/Collapsible/CollapsibleTrigger.d.ts.map +1 -0
- package/build/esm/Collapsible/CollapsibleTrigger.js +51 -0
- package/build/esm/Collapsible/CollapsibleTrigger.js.map +1 -0
- package/build/esm/Collapsible/context.d.ts +16 -0
- package/build/esm/Collapsible/context.d.ts.map +1 -0
- package/build/esm/Collapsible/context.js +11 -0
- package/build/esm/Collapsible/context.js.map +1 -0
- package/build/esm/Collapsible/index.d.ts +4 -0
- package/build/esm/Collapsible/index.d.ts.map +1 -0
- package/build/esm/Collapsible/index.js +4 -0
- package/build/esm/Collapsible/index.js.map +1 -0
- package/build/esm/Menu/Menu.d.ts +3 -2
- package/build/esm/Menu/Menu.d.ts.map +1 -1
- package/build/esm/Menu/Menu.js +64 -4
- package/build/esm/Menu/Menu.js.map +1 -1
- package/build/esm/Menu/MenuButton.d.ts.map +1 -1
- package/build/esm/Menu/MenuButton.js +85 -8
- package/build/esm/Menu/MenuButton.js.map +1 -1
- package/build/esm/Menu/MenuItem.d.ts.map +1 -1
- package/build/esm/Menu/MenuItem.js +16 -4
- package/build/esm/Menu/MenuItem.js.map +1 -1
- package/build/esm/Menu/MenuList.d.ts.map +1 -1
- package/build/esm/Menu/MenuList.js +47 -12
- package/build/esm/Menu/MenuList.js.map +1 -1
- package/build/esm/Menu/MenuPopover.d.ts.map +1 -1
- package/build/esm/Menu/MenuPopover.js +12 -1
- package/build/esm/Menu/MenuPopover.js.map +1 -1
- package/build/esm/Menu/MenuSubmenuTrigger.d.ts +8 -0
- package/build/esm/Menu/MenuSubmenuTrigger.d.ts.map +1 -0
- package/build/esm/Menu/MenuSubmenuTrigger.js +131 -0
- package/build/esm/Menu/MenuSubmenuTrigger.js.map +1 -0
- package/build/esm/Menu/context.d.ts +13 -3
- package/build/esm/Menu/context.d.ts.map +1 -1
- package/build/esm/Menu/context.js +1 -0
- package/build/esm/Menu/context.js.map +1 -1
- package/build/esm/Menu/index.d.ts +3 -0
- package/build/esm/Menu/index.d.ts.map +1 -1
- package/build/esm/Menu/index.js +2 -0
- package/build/esm/Menu/index.js.map +1 -1
- package/build/esm/Menu/scope.d.ts +1 -0
- package/build/esm/Menu/scope.d.ts.map +1 -1
- package/build/esm/Menu/scope.js +2 -1
- package/build/esm/Menu/scope.js.map +1 -1
- package/build/esm/MenuBar/MenuBar.d.ts +11 -0
- package/build/esm/MenuBar/MenuBar.d.ts.map +1 -0
- package/build/esm/MenuBar/MenuBar.js +153 -0
- package/build/esm/MenuBar/MenuBar.js.map +1 -0
- package/build/esm/MenuBar/context.d.ts +29 -0
- package/build/esm/MenuBar/context.d.ts.map +1 -0
- package/build/esm/MenuBar/context.js +7 -0
- package/build/esm/MenuBar/context.js.map +1 -0
- package/build/esm/MenuBar/index.d.ts +2 -0
- package/build/esm/MenuBar/index.d.ts.map +1 -0
- package/build/esm/MenuBar/index.js +2 -0
- package/build/esm/MenuBar/index.js.map +1 -0
- package/build/esm/Slider/Slider.d.ts +47 -1
- package/build/esm/Slider/Slider.d.ts.map +1 -1
- package/build/esm/Slider/Slider.js +91 -5
- package/build/esm/Slider/Slider.js.map +1 -1
- package/build/esm/ToggleGroup/ToggleGroup.d.ts +40 -0
- package/build/esm/ToggleGroup/ToggleGroup.d.ts.map +1 -0
- package/build/esm/ToggleGroup/ToggleGroup.js +113 -0
- package/build/esm/ToggleGroup/ToggleGroup.js.map +1 -0
- package/build/esm/ToggleGroup/ToggleGroupContext.d.ts +10 -0
- package/build/esm/ToggleGroup/ToggleGroupContext.d.ts.map +1 -0
- package/build/esm/ToggleGroup/ToggleGroupContext.js +6 -0
- package/build/esm/ToggleGroup/ToggleGroupContext.js.map +1 -0
- package/build/esm/ToggleGroup/index.d.ts +3 -0
- package/build/esm/ToggleGroup/index.d.ts.map +1 -0
- package/build/esm/ToggleGroup/index.js +3 -0
- package/build/esm/ToggleGroup/index.js.map +1 -0
- package/build/esm/Tree/Tree.d.ts +3 -0
- package/build/esm/Tree/Tree.d.ts.map +1 -0
- package/build/esm/Tree/Tree.js +730 -0
- package/build/esm/Tree/Tree.js.map +1 -0
- package/build/esm/Tree/TreeHeader.d.ts +3 -0
- package/build/esm/Tree/TreeHeader.d.ts.map +1 -0
- package/build/esm/Tree/TreeHeader.js +5 -0
- package/build/esm/Tree/TreeHeader.js.map +1 -0
- package/build/esm/Tree/TreeItem.d.ts +3 -0
- package/build/esm/Tree/TreeItem.d.ts.map +1 -0
- package/build/esm/Tree/TreeItem.js +5 -0
- package/build/esm/Tree/TreeItem.js.map +1 -0
- package/build/esm/Tree/TreeItemContent.d.ts +3 -0
- package/build/esm/Tree/TreeItemContent.d.ts.map +1 -0
- package/build/esm/Tree/TreeItemContent.js +69 -0
- package/build/esm/Tree/TreeItemContent.js.map +1 -0
- package/build/esm/Tree/TreeSection.d.ts +3 -0
- package/build/esm/Tree/TreeSection.d.ts.map +1 -0
- package/build/esm/Tree/TreeSection.js +5 -0
- package/build/esm/Tree/TreeSection.js.map +1 -0
- package/build/esm/Tree/collection.d.ts +18 -0
- package/build/esm/Tree/collection.d.ts.map +1 -0
- package/build/esm/Tree/collection.js +252 -0
- package/build/esm/Tree/collection.js.map +1 -0
- package/build/esm/Tree/context.d.ts +3 -0
- package/build/esm/Tree/context.d.ts.map +1 -0
- package/build/esm/Tree/context.js +3 -0
- package/build/esm/Tree/context.js.map +1 -0
- package/build/esm/Tree/index.d.ts +8 -0
- package/build/esm/Tree/index.d.ts.map +1 -0
- package/build/esm/Tree/index.js +7 -0
- package/build/esm/Tree/index.js.map +1 -0
- package/build/esm/Tree/types.d.ts +128 -0
- package/build/esm/Tree/types.d.ts.map +1 -0
- package/build/esm/Tree/types.js +2 -0
- package/build/esm/Tree/types.js.map +1 -0
- package/build/esm/hooks/index.d.ts +1 -0
- package/build/esm/hooks/index.d.ts.map +1 -1
- package/build/esm/hooks/index.js +1 -0
- package/build/esm/hooks/index.js.map +1 -1
- package/build/esm/hooks/useTransitionStatus.d.ts +7 -0
- package/build/esm/hooks/useTransitionStatus.d.ts.map +1 -0
- package/build/esm/hooks/useTransitionStatus.js +48 -0
- package/build/esm/hooks/useTransitionStatus.js.map +1 -0
- package/build/esm/index.d.ts +5 -0
- package/build/esm/index.d.ts.map +1 -1
- package/build/esm/index.js +5 -0
- package/build/esm/index.js.map +1 -1
- package/build/esm/toggle/Toggle.d.ts +28 -0
- package/build/esm/toggle/Toggle.d.ts.map +1 -0
- package/build/esm/toggle/Toggle.js +55 -0
- package/build/esm/toggle/Toggle.js.map +1 -0
- package/build/esm/toggle/index.d.ts +2 -0
- package/build/esm/toggle/index.d.ts.map +1 -0
- package/build/esm/toggle/index.js +2 -0
- package/build/esm/toggle/index.js.map +1 -0
- package/build/esm/utils/assign-ref.d.ts +3 -3
- package/build/esm/utils/assign-ref.d.ts.map +1 -1
- package/build/esm/utils/assign-ref.js +1 -1
- package/build/esm/utils/assign-ref.js.map +1 -1
- package/build/tsconfig-build.tsbuildinfo +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -4
- package/src/Accordion/AccordionBody.tsx +6 -35
- package/src/Accordion/AccordionHeader.tsx +29 -103
- package/src/Accordion/AccordionItem.tsx +40 -29
- package/src/Accordion/context.ts +0 -18
- package/src/Accordion/scopeQuery.ts +4 -0
- package/src/Collapsible/Collapsible.story.tsx +153 -0
- package/src/Collapsible/Collapsible.tsx +79 -0
- package/src/Collapsible/CollapsiblePanel.tsx +103 -0
- package/src/Collapsible/CollapsibleTrigger.tsx +60 -0
- package/src/Collapsible/context.ts +28 -0
- package/src/Collapsible/index.ts +3 -0
- package/src/Menu/Menu.story.tsx +70 -1
- package/src/Menu/Menu.tsx +141 -65
- package/src/Menu/MenuButton.tsx +115 -9
- package/src/Menu/MenuItem.tsx +20 -3
- package/src/Menu/MenuList.tsx +50 -13
- package/src/Menu/MenuPopover.tsx +12 -2
- package/src/Menu/MenuSubmenuTrigger.tsx +167 -0
- package/src/Menu/context.ts +20 -10
- package/src/Menu/index.ts +3 -0
- package/src/Menu/scope.ts +4 -1
- package/src/Menu/styles.css +57 -22
- package/src/MenuBar/MenuBar.story.tsx +92 -0
- package/src/MenuBar/MenuBar.tsx +236 -0
- package/src/MenuBar/context.ts +46 -0
- package/src/MenuBar/index.ts +1 -0
- package/src/MenuBar/styles.css +78 -0
- package/src/Slider/Slider.story.tsx +1 -1
- package/src/Slider/Slider.tsx +145 -8
- package/src/Toggle/Toggle.story.tsx +42 -0
- package/src/Toggle/Toggle.tsx +95 -0
- package/src/Toggle/index.ts +1 -0
- package/src/Toggle/styles.css +39 -0
- package/src/ToggleGroup/ToggleGroup.story.tsx +86 -0
- package/src/ToggleGroup/ToggleGroup.tsx +185 -0
- package/src/ToggleGroup/ToggleGroupContext.ts +17 -0
- package/src/ToggleGroup/index.ts +2 -0
- package/src/ToggleGroup/styles.css +66 -0
- package/src/Tree/Tree.story.tsx +221 -0
- package/src/Tree/Tree.tsx +1081 -0
- package/src/Tree/TreeHeader.tsx +9 -0
- package/src/Tree/TreeItem.tsx +9 -0
- package/src/Tree/TreeItemContent.tsx +91 -0
- package/src/Tree/TreeSection.tsx +9 -0
- package/src/Tree/collection.tsx +371 -0
- package/src/Tree/context.ts +6 -0
- package/src/Tree/index.ts +7 -0
- package/src/Tree/styles.css +135 -0
- package/src/Tree/types.ts +161 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useTransitionStatus.ts +65 -0
- package/src/index.ts +5 -0
- 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 @@
|
|
|
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 @@
|
|
|
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":[]}
|
package/build/esm/Menu/Menu.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import type {
|
|
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:
|
|
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,
|
|
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"}
|
package/build/esm/Menu/Menu.js
CHANGED
|
@@ -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
|
|
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 {
|
|
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,
|
|
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 (
|
|
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 (
|
|
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:
|
|
122
|
+
ref: setButtonRef,
|
|
50
123
|
as: innerAs,
|
|
51
124
|
id: buttonId,
|
|
52
|
-
role:
|
|
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
|
-
|
|
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,
|
|
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"}
|