UNPKG

@react-md/menu

Version:

Create menus that auto-position themselves within the viewport and adhere to the accessibility guidelines

93 lines 3.36 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.MenuItemGroup = void 0; var jsx_runtime_1 = require("react/jsx-runtime"); var react_1 = require("react"); var list_1 = require("@react-md/list"); /** * If a menu or menubar contains more than one group of menuitemradio elements, * or if the menu contains one group and other, unrelated menu items, authors * SHOULD nest each set of related menuitemradio elements in an element using * the group role, and authors SHOULD delimit the group from other menu items * with an element using the separator role. * * @see {@link https://www.w3.org/TR/wai-aria-1.1/#menuitemradio} * * @example * Simple Example * ```tsx * import { ReactElement, useState } from "react"; * import { DropdownMenu, MenuItemGroup, MenuItemSeparator } from "@react-md/menu"; * import { MenuItemRadio, MenuItemSwitch } from "@react-md/form"; * * function Example(): ReactElement { * const [value, setValue] = useState("value1"); * const [checked, setChecked] = useState(false); * * return ( * <DropdownMenu id="dropdown-menu-id" buttonChildren="Button"> * <MenuItemSwitch * id="switch-id" * checked={checked} * onCheckedChange={nextChecked => setChecked(nextChecked)} * > * Light mode * </MenuItemSwitch> * <MenuItemSeparator /> * <MenuItemGroup aria-label="My Group Label"> * <MenuItemRadio * id="radio-1" * checked={value === "value1"} * onCheckedChange={() => setValue("value1")} * > * Radio 1 * </MenuItemRadio> * <MenuItemRadio * id="radio-2" * checked={value === "value2"} * onCheckedChange={() => setValue("value2")} * > * Radio 2 * </MenuItemRadio> * <MenuItemRadio * id="radio-3" * checked={value === "value3"} * onCheckedChange={() => setValue("value3")} * > * Radio 3 * </MenuItemRadio> * </MenuItemGroup> * </DropdownMenu> * ); * } * ``` * * @remarks \@since 5.0.0 */ exports.MenuItemGroup = (0, react_1.forwardRef)(function MenuItemGroup(_a, ref) { var children = _a.children, props = __rest(_a, ["children"]); return ((0, jsx_runtime_1.jsx)(list_1.List, __assign({}, props, { ref: ref, role: "group" }, { children: children }))); }); //# sourceMappingURL=MenuItemGroup.js.map