mirror of
https://github.com/zoriya/v10.git
synced 2026-08-08 23:27:58 +00:00
31 lines
1005 B
JavaScript
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
|