@basic-ui/core 0.0.46 → 0.0.47
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 +65 -4
- package/build/cjs/index.js.map +1 -1
- package/build/esm/Menu/ContextMenuTrigger.d.ts +11 -0
- package/build/esm/Menu/ContextMenuTrigger.js +51 -0
- package/build/esm/Menu/ContextMenuTrigger.js.map +1 -0
- package/build/esm/Menu/Menu.js +11 -2
- package/build/esm/Menu/Menu.js.map +1 -1
- package/build/esm/Menu/MenuList.js +5 -2
- package/build/esm/Menu/MenuList.js.map +1 -1
- package/build/esm/Menu/MenuPopover.js +6 -2
- package/build/esm/Menu/MenuPopover.js.map +1 -1
- package/build/esm/Menu/context.d.ts +5 -1
- package/build/esm/Menu/context.js.map +1 -1
- package/build/esm/Menu/index.d.ts +1 -0
- package/build/esm/Menu/index.js +1 -0
- package/build/esm/Menu/index.js.map +1 -1
- package/build/tsconfig-build.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/Menu/ContextMenu.story.tsx +73 -0
- package/src/Menu/ContextMenuTrigger.tsx +63 -0
- package/src/Menu/Menu.story.tsx +2 -2
- package/src/Menu/Menu.tsx +14 -1
- package/src/Menu/MenuComplex.story.tsx +2 -2
- package/src/Menu/MenuList.tsx +13 -5
- package/src/Menu/MenuPopover.tsx +9 -2
- package/src/Menu/context.ts +5 -1
- package/src/Menu/index.ts +1 -0
package/build/cjs/index.js
CHANGED
|
@@ -1916,12 +1916,20 @@ const Menu = /*#__PURE__*/react.forwardRef(function Menu(props, forwardedRef) {
|
|
|
1916
1916
|
setState(isOpen);
|
|
1917
1917
|
});
|
|
1918
1918
|
menuListIdRef.current = react.useId();
|
|
1919
|
+
const offset = react.useRef([0, 0]);
|
|
1920
|
+
const offsetFn = react.useCallback(({
|
|
1921
|
+
reference
|
|
1922
|
+
}) => [offset.current[0], offset.current[1] - reference.height], []);
|
|
1923
|
+
const isContextMenu = react.useRef(false);
|
|
1919
1924
|
const value = {
|
|
1920
1925
|
menuListIdRef,
|
|
1921
1926
|
openWithArrowKeyRef,
|
|
1922
1927
|
open,
|
|
1923
1928
|
onChange,
|
|
1924
|
-
buttonRef
|
|
1929
|
+
buttonRef,
|
|
1930
|
+
offset,
|
|
1931
|
+
offsetFn,
|
|
1932
|
+
isContextMenu
|
|
1925
1933
|
};
|
|
1926
1934
|
return /*#__PURE__*/jsxRuntime.jsx(MenuProvider, {
|
|
1927
1935
|
value: value,
|
|
@@ -2000,6 +2008,51 @@ const MenuButton = /*#__PURE__*/react.forwardRef(function MenuButton(props, forw
|
|
|
2000
2008
|
});
|
|
2001
2009
|
});
|
|
2002
2010
|
|
|
2011
|
+
const ContextMenuTrigger = /*#__PURE__*/react.forwardRef(function MenuButton(props, forwardedRef) {
|
|
2012
|
+
const {
|
|
2013
|
+
as: Comp = 'div',
|
|
2014
|
+
id: preferredId,
|
|
2015
|
+
onContextMenu,
|
|
2016
|
+
disabled,
|
|
2017
|
+
...otherProps
|
|
2018
|
+
} = props;
|
|
2019
|
+
const {
|
|
2020
|
+
menuListIdRef,
|
|
2021
|
+
open,
|
|
2022
|
+
buttonRef,
|
|
2023
|
+
onChange,
|
|
2024
|
+
offset,
|
|
2025
|
+
isContextMenu
|
|
2026
|
+
} = useMenuContext();
|
|
2027
|
+
const idGenerated = react.useId();
|
|
2028
|
+
const id = preferredId || idGenerated;
|
|
2029
|
+
|
|
2030
|
+
const handleContextMenu = e => {
|
|
2031
|
+
if (disabled) {
|
|
2032
|
+
return;
|
|
2033
|
+
}
|
|
2034
|
+
|
|
2035
|
+
const rect = e.currentTarget.getBoundingClientRect();
|
|
2036
|
+
offset.current = [e.nativeEvent.x - rect.x, e.nativeEvent.y - rect.y];
|
|
2037
|
+
isContextMenu.current = true;
|
|
2038
|
+
buttonRef.current = e.currentTarget;
|
|
2039
|
+
onChange && onChange(e, !open);
|
|
2040
|
+
e.preventDefault();
|
|
2041
|
+
};
|
|
2042
|
+
|
|
2043
|
+
return /*#__PURE__*/jsxRuntime.jsx(Comp, {
|
|
2044
|
+
ref: forwardedRef,
|
|
2045
|
+
id: id,
|
|
2046
|
+
"aria-haspopup": true,
|
|
2047
|
+
"aria-controls": menuListIdRef.current,
|
|
2048
|
+
"aria-expanded": open ? true : undefined,
|
|
2049
|
+
"data-menu-trigger": "",
|
|
2050
|
+
onContextMenu: wrapEvent(onContextMenu, handleContextMenu),
|
|
2051
|
+
disabled: disabled,
|
|
2052
|
+
...otherProps
|
|
2053
|
+
});
|
|
2054
|
+
});
|
|
2055
|
+
|
|
2003
2056
|
const MenuItem = /*#__PURE__*/react.forwardRef(function MenuItem(props, forwardedRef) {
|
|
2004
2057
|
const {
|
|
2005
2058
|
as: Comp = 'li',
|
|
@@ -2081,7 +2134,8 @@ const MenuList = /*#__PURE__*/react.forwardRef(function MenuList(props, forwarde
|
|
|
2081
2134
|
buttonRef,
|
|
2082
2135
|
onChange,
|
|
2083
2136
|
openWithArrowKeyRef,
|
|
2084
|
-
open
|
|
2137
|
+
open,
|
|
2138
|
+
isContextMenu
|
|
2085
2139
|
} = useMenuContext();
|
|
2086
2140
|
const [navigationItem, setNavigationItem] = react.useState();
|
|
2087
2141
|
const [mounted, setMounted] = react.useState(false);
|
|
@@ -2117,7 +2171,9 @@ const MenuList = /*#__PURE__*/react.forwardRef(function MenuList(props, forwarde
|
|
|
2117
2171
|
setMounted(true);
|
|
2118
2172
|
}, [mounted, navigationItem, onNavigate, openWithArrowKeyRef, scope, defaultActiveItemValue]);
|
|
2119
2173
|
useOnClickOutside(menuListRef, e => {
|
|
2120
|
-
|
|
2174
|
+
console.log(isContextMenu.current);
|
|
2175
|
+
|
|
2176
|
+
if (isContextMenu.current || e.target instanceof HTMLElement && e.target !== buttonRef.current && !buttonRef.current?.contains(e.target)) {
|
|
2121
2177
|
onChange && onChange(e, false);
|
|
2122
2178
|
}
|
|
2123
2179
|
|
|
@@ -2374,7 +2430,9 @@ const MenuPopover = /*#__PURE__*/react.forwardRef(function MenuPopover(props, fo
|
|
|
2374
2430
|
} = props;
|
|
2375
2431
|
const {
|
|
2376
2432
|
buttonRef,
|
|
2377
|
-
open
|
|
2433
|
+
open,
|
|
2434
|
+
offsetFn,
|
|
2435
|
+
isContextMenu
|
|
2378
2436
|
} = useMenuContext();
|
|
2379
2437
|
|
|
2380
2438
|
if (!open) {
|
|
@@ -2385,6 +2443,8 @@ const MenuPopover = /*#__PURE__*/react.forwardRef(function MenuPopover(props, fo
|
|
|
2385
2443
|
as: as,
|
|
2386
2444
|
ref: forwardedRef,
|
|
2387
2445
|
anchorEl: buttonRef,
|
|
2446
|
+
offsetFn: offsetFn,
|
|
2447
|
+
placement: isContextMenu.current ? 'bottom-start' : undefined,
|
|
2388
2448
|
...otherProps
|
|
2389
2449
|
});
|
|
2390
2450
|
});
|
|
@@ -3977,6 +4037,7 @@ exports.ComboboxLabel = ComboboxLabel;
|
|
|
3977
4037
|
exports.ComboboxList = ComboboxList;
|
|
3978
4038
|
exports.ComboboxOption = ComboboxOption;
|
|
3979
4039
|
exports.ComboboxPopover = ComboboxPopover;
|
|
4040
|
+
exports.ContextMenuTrigger = ContextMenuTrigger;
|
|
3980
4041
|
exports.FocusLock = FocusLock;
|
|
3981
4042
|
exports.Menu = Menu;
|
|
3982
4043
|
exports.MenuButton = MenuButton;
|