UNPKG

@react-md/form

Version:

This package is for creating all the different form input types.

133 lines 4.45 kB
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; }; import { jsx as _jsx } from "react/jsx-runtime"; import { forwardRef } from "react"; import { useIcon } from "@react-md/icon"; import { MenuItemInputToggle } from "./MenuItemInputToggle"; /** * This is a simple wrapper for the {@link MenuItemInputToggle} component to * render it as a radio and pulling the radio icon from the * {@link IconProvider}. * * @remarks * 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 * Only Radio Items * ```tsx * import { ReactElement, useState } from "react"; * import { DropdownMenu } from "@react-md/menu"; * import { MenuItemRadio } from "@react-md/form"; * * function Example(): ReactElement { * const [value, setValue] = useState("value1"); * * return ( * <DropdownMenu id="dropdown-menu-id" buttonChildren="Button"> * <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> * </DropdownMenu> * ); * } * ``` * * @example * With Other Items * ```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"); * * 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 2.8.0 */ export var MenuItemRadio = forwardRef(function MenuItemRadio(_a, ref) { var propIcon = _a.icon, props = __rest(_a, ["icon"]); var icon = useIcon("radio", propIcon); return (_jsx(MenuItemInputToggle, __assign({}, props, { ref: ref, icon: icon, type: "radio" }))); }); //# sourceMappingURL=MenuItemRadio.js.map