UNPKG

@react-md/form

Version:

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

136 lines 4.62 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.MenuItemRadio = void 0; var jsx_runtime_1 = require("react/jsx-runtime"); var react_1 = require("react"); var icon_1 = require("@react-md/icon"); var MenuItemInputToggle_1 = require("./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 */ exports.MenuItemRadio = (0, react_1.forwardRef)(function MenuItemRadio(_a, ref) { var propIcon = _a.icon, props = __rest(_a, ["icon"]); var icon = (0, icon_1.useIcon)("radio", propIcon); return ((0, jsx_runtime_1.jsx)(MenuItemInputToggle_1.MenuItemInputToggle, __assign({}, props, { ref: ref, icon: icon, type: "radio" }))); }); //# sourceMappingURL=MenuItemRadio.js.map