UNPKG

@wordpress/preferences

Version:
67 lines (66 loc) 1.73 kB
// packages/preferences/src/components/preference-toggle-menu-item/index.tsx import { useSelect, useDispatch } from "@wordpress/data"; import { MenuItem } from "@wordpress/components"; import { __, sprintf } from "@wordpress/i18n"; import { check } from "@wordpress/icons"; import { speak } from "@wordpress/a11y"; import { store as preferencesStore } from "../../store"; import { jsx } from "react/jsx-runtime"; function PreferenceToggleMenuItem({ scope, name, label, info, messageActivated, messageDeactivated, shortcut, handleToggling = true, onToggle = () => null, disabled = false }) { const isActive = useSelect( (select) => !!select(preferencesStore).get(scope, name), [scope, name] ); const { toggle } = useDispatch(preferencesStore); const speakMessage = () => { if (isActive) { const message = messageDeactivated || sprintf( /* translators: %s: preference name, e.g. 'Fullscreen mode' */ __("Preference deactivated - %s"), label ); speak(message); } else { const message = messageActivated || sprintf( /* translators: %s: preference name, e.g. 'Fullscreen mode' */ __("Preference activated - %s"), label ); speak(message); } }; return /* @__PURE__ */ jsx( MenuItem, { icon: isActive ? check : null, isSelected: isActive, onClick: () => { onToggle(); if (handleToggling) { toggle(scope, name); } speakMessage(); }, role: "menuitemcheckbox", info, shortcut, disabled, children: label } ); } export { PreferenceToggleMenuItem as default }; //# sourceMappingURL=index.js.map