UNPKG

@mantine/core

Version:

React components library focused on usability, accessibility and developer experience

52 lines (51 loc) 2.07 kB
"use client"; import { useProps } from "../../../core/MantineProvider/use-props/use-props.mjs"; import { factory } from "../../../core/factory/factory.mjs"; import { CheckIcon } from "../../Checkbox/CheckIcon.mjs"; import { useMenuContext } from "../Menu.context.mjs"; import { MenuCheckboxGroupContext } from "../MenuCheckboxGroup/MenuCheckboxGroup.context.mjs"; import { MenuSelectableItem } from "../MenuSelectableItem/MenuSelectableItem.mjs"; import Menu_module_default from "../Menu.module.mjs"; import { use } from "react"; import { useUncontrolled } from "@mantine/hooks"; import { jsx } from "react/jsx-runtime"; //#region packages/@mantine/core/src/components/Menu/MenuCheckboxItem/MenuCheckboxItem.tsx const MenuCheckboxItem = factory((_props) => { const { classNames, className, style, styles, vars, color, closeMenuOnClick, rightSection, children, disabled, "data-disabled": dataDisabled, value, checked, defaultChecked, onChange, checkIcon, ref, ...others } = useProps("MenuCheckboxItem", null, _props); const ctx = useMenuContext(); const groupCtx = use(MenuCheckboxGroupContext); const groupChecked = groupCtx && value !== void 0 ? groupCtx.values.includes(value) : void 0; const [_checked, setChecked] = useUncontrolled({ value: checked ?? groupChecked, defaultValue: defaultChecked, finalValue: false, onChange }); return /* @__PURE__ */ jsx(MenuSelectableItem, { role: "menuitemcheckbox", checked: _checked, indicator: checkIcon ?? ctx.checkIcon ?? /* @__PURE__ */ jsx(CheckIcon, { size: 10 }), onSelect: () => { if (onChange) setChecked(!_checked); else if (groupCtx && value !== void 0) groupCtx.onChange(value); else setChecked(!_checked); }, color, closeMenuOnClick, rightSection, disabled, dataDisabled, className, style, styles, classNames, buttonRef: ref, others, children }); }); MenuCheckboxItem.classes = Menu_module_default; MenuCheckboxItem.displayName = "@mantine/core/MenuCheckboxItem"; //#endregion export { MenuCheckboxItem }; //# sourceMappingURL=MenuCheckboxItem.mjs.map