Files
v10/dist/dev/ui/menu/use-menu-group.js

31 lines
1005 B
JavaScript

"use client";
import { MenuGroupContextProvider } from "./context.js";
import { useCallback, useMemo, useState } from "react";
import { jsx } from "react/jsx-runtime";
//#region src/ui/menu/use-menu-group.tsx
function hasExplicitLabel(elementProps) {
return elementProps["aria-label"] !== void 0 || elementProps["aria-labelledby"] !== void 0;
}
function getMenuGroupProps(labelId, elementProps) {
return {
role: "group",
"aria-labelledby": hasExplicitLabel(elementProps) ? void 0 : labelId
};
}
function MenuGroupProvider({ children }) {
const [labelId, setLabelId] = useState();
const registerLabel = useCallback((id) => {
setLabelId(id);
return () => {
setLabelId((current) => current === id ? void 0 : current);
};
}, []);
return /* @__PURE__ */ jsx(MenuGroupContextProvider, {
value: useMemo(() => ({ registerLabel }), [registerLabel]),
children: children(labelId)
});
}
//#endregion
export { MenuGroupProvider, getMenuGroupProps };
//# sourceMappingURL=use-menu-group.js.map