matrix-react-sdk
Version:
SDK for matrix.org using React
79 lines (77 loc) • 9.64 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.StyledMenuItemCheckbox = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireDefault(require("react"));
var _RovingTabIndex = require("../RovingTabIndex");
var _StyledCheckbox = _interopRequireDefault(require("../../components/views/elements/StyledCheckbox"));
var _KeyboardShortcuts = require("../KeyboardShortcuts");
var _KeyBindingsManager = require("../../KeyBindingsManager");
const _excluded = ["children", "label", "onChange", "onClose"];
/*
Copyright 2024 New Vector Ltd.
Copyright 2019 The Matrix.org Foundation C.I.C.
Copyright 2018 New Vector Ltd
Copyright 2015, 2016 OpenMarket Ltd
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
// Semantic component for representing a styled role=menuitemcheckbox
const StyledMenuItemCheckbox = _ref => {
let {
children,
label,
onChange,
onClose
} = _ref,
props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
const [onFocus, isActive, ref] = (0, _RovingTabIndex.useRovingTabIndex)();
const onKeyDown = e => {
let handled = true;
const action = (0, _KeyBindingsManager.getKeyBindingsManager)().getAccessibilityAction(e);
switch (action) {
case _KeyboardShortcuts.KeyBindingAction.Space:
onChange();
break;
case _KeyboardShortcuts.KeyBindingAction.Enter:
onChange();
// Implements https://www.w3.org/TR/wai-aria-practices/#keyboard-interaction-12
onClose();
break;
default:
handled = false;
}
if (handled) {
e.stopPropagation();
e.preventDefault();
}
};
const onKeyUp = e => {
const action = (0, _KeyBindingsManager.getKeyBindingsManager)().getAccessibilityAction(e);
switch (action) {
case _KeyboardShortcuts.KeyBindingAction.Space:
case _KeyboardShortcuts.KeyBindingAction.Enter:
// prevent the input default handler as we handle it on keydown to match
// https://www.w3.org/TR/wai-aria-practices/examples/menubar/menubar-2/menubar-2.html
e.stopPropagation();
e.preventDefault();
break;
}
};
return /*#__PURE__*/_react.default.createElement(_StyledCheckbox.default, (0, _extends2.default)({}, props, {
role: "menuitemcheckbox",
"aria-label": label,
onChange: onChange,
onKeyDown: onKeyDown,
onKeyUp: onKeyUp,
onFocus: onFocus,
inputRef: ref,
tabIndex: isActive ? 0 : -1
}), children);
};
exports.StyledMenuItemCheckbox = StyledMenuItemCheckbox;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9Sb3ZpbmdUYWJJbmRleCIsIl9TdHlsZWRDaGVja2JveCIsIl9LZXlib2FyZFNob3J0Y3V0cyIsIl9LZXlCaW5kaW5nc01hbmFnZXIiLCJfZXhjbHVkZWQiLCJTdHlsZWRNZW51SXRlbUNoZWNrYm94IiwiX3JlZiIsImNoaWxkcmVuIiwibGFiZWwiLCJvbkNoYW5nZSIsIm9uQ2xvc2UiLCJwcm9wcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllczIiLCJkZWZhdWx0Iiwib25Gb2N1cyIsImlzQWN0aXZlIiwicmVmIiwidXNlUm92aW5nVGFiSW5kZXgiLCJvbktleURvd24iLCJlIiwiaGFuZGxlZCIsImFjdGlvbiIsImdldEtleUJpbmRpbmdzTWFuYWdlciIsImdldEFjY2Vzc2liaWxpdHlBY3Rpb24iLCJLZXlCaW5kaW5nQWN0aW9uIiwiU3BhY2UiLCJFbnRlciIsInN0b3BQcm9wYWdhdGlvbiIsInByZXZlbnREZWZhdWx0Iiwib25LZXlVcCIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kczIiLCJyb2xlIiwiaW5wdXRSZWYiLCJ0YWJJbmRleCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWNjZXNzaWJpbGl0eS9jb250ZXh0X21lbnUvU3R5bGVkTWVudUl0ZW1DaGVja2JveC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMTkgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cbkNvcHlyaWdodCAyMDE4IE5ldyBWZWN0b3IgTHRkXG5Db3B5cmlnaHQgMjAxNSwgMjAxNiBPcGVuTWFya2V0IEx0ZFxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IHVzZVJvdmluZ1RhYkluZGV4IH0gZnJvbSBcIi4uL1JvdmluZ1RhYkluZGV4XCI7XG5pbXBvcnQgU3R5bGVkQ2hlY2tib3ggZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdmlld3MvZWxlbWVudHMvU3R5bGVkQ2hlY2tib3hcIjtcbmltcG9ydCB7IEtleUJpbmRpbmdBY3Rpb24gfSBmcm9tIFwiLi4vS2V5Ym9hcmRTaG9ydGN1dHNcIjtcbmltcG9ydCB7IGdldEtleUJpbmRpbmdzTWFuYWdlciB9IGZyb20gXCIuLi8uLi9LZXlCaW5kaW5nc01hbmFnZXJcIjtcblxuaW50ZXJmYWNlIElQcm9wcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBTdHlsZWRDaGVja2JveD4ge1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG9uQ2hhbmdlKCk6IHZvaWQ7IC8vIHdlIGhhbmRsZSBrZXl1cC9kb3duIG91cnNlbHZlcyBzbyBsb3NlIHRoZSBDaGFuZ2VFdmVudFxuICAgIG9uQ2xvc2UoKTogdm9pZDsgLy8gZ2V0cyBjYWxsZWQgYWZ0ZXIgb25DaGFuZ2Ugb24gS2V5QmluZGluZ0FjdGlvbi5BY3RpdmF0ZVNlbGVjdGVkQnV0dG9uXG59XG5cbi8vIFNlbWFudGljIGNvbXBvbmVudCBmb3IgcmVwcmVzZW50aW5nIGEgc3R5bGVkIHJvbGU9bWVudWl0ZW1jaGVja2JveFxuZXhwb3J0IGNvbnN0IFN0eWxlZE1lbnVJdGVtQ2hlY2tib3g6IFJlYWN0LkZDPElQcm9wcz4gPSAoeyBjaGlsZHJlbiwgbGFiZWwsIG9uQ2hhbmdlLCBvbkNsb3NlLCAuLi5wcm9wcyB9KSA9PiB7XG4gICAgY29uc3QgW29uRm9jdXMsIGlzQWN0aXZlLCByZWZdID0gdXNlUm92aW5nVGFiSW5kZXg8SFRNTElucHV0RWxlbWVudD4oKTtcblxuICAgIGNvbnN0IG9uS2V5RG93biA9IChlOiBSZWFjdC5LZXlib2FyZEV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgIGxldCBoYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gZ2V0S2V5QmluZGluZ3NNYW5hZ2VyKCkuZ2V0QWNjZXNzaWJpbGl0eUFjdGlvbihlKTtcblxuICAgICAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgICAgICAgY2FzZSBLZXlCaW5kaW5nQWN0aW9uLlNwYWNlOlxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEtleUJpbmRpbmdBY3Rpb24uRW50ZXI6XG4gICAgICAgICAgICAgICAgb25DaGFuZ2UoKTtcbiAgICAgICAgICAgICAgICAvLyBJbXBsZW1lbnRzIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS1wcmFjdGljZXMvI2tleWJvYXJkLWludGVyYWN0aW9uLTEyXG4gICAgICAgICAgICAgICAgb25DbG9zZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBoYW5kbGVkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFuZGxlZCkge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgY29uc3Qgb25LZXlVcCA9IChlOiBSZWFjdC5LZXlib2FyZEV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IGdldEtleUJpbmRpbmdzTWFuYWdlcigpLmdldEFjY2Vzc2liaWxpdHlBY3Rpb24oZSk7XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICAgICAgICBjYXNlIEtleUJpbmRpbmdBY3Rpb24uU3BhY2U6XG4gICAgICAgICAgICBjYXNlIEtleUJpbmRpbmdBY3Rpb24uRW50ZXI6XG4gICAgICAgICAgICAgICAgLy8gcHJldmVudCB0aGUgaW5wdXQgZGVmYXVsdCBoYW5kbGVyIGFzIHdlIGhhbmRsZSBpdCBvbiBrZXlkb3duIHRvIG1hdGNoXG4gICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLXByYWN0aWNlcy9leGFtcGxlcy9tZW51YmFyL21lbnViYXItMi9tZW51YmFyLTIuaHRtbFxuICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgICAgIHJvbGU9XCJtZW51aXRlbWNoZWNrYm94XCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9e2xhYmVsfVxuICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICAgICAgICBvbktleVVwPXtvbktleVVwfVxuICAgICAgICAgICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICAgICAgICAgIGlucHV0UmVmPXtyZWZ9XG4gICAgICAgICAgICB0YWJJbmRleD17aXNBY3RpdmUgPyAwIDogLTF9XG4gICAgICAgID5cbiAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICApO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBVUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsZUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsZUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsa0JBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLG1CQUFBLEdBQUFKLE9BQUE7QUFBaUUsTUFBQUssU0FBQTtBQWZqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFlQTtBQUNPLE1BQU1DLHNCQUF3QyxHQUFHQyxJQUFBLElBQXNEO0VBQUEsSUFBckQ7TUFBRUMsUUFBUTtNQUFFQyxLQUFLO01BQUVDLFFBQVE7TUFBRUM7SUFBa0IsQ0FBQyxHQUFBSixJQUFBO0lBQVBLLEtBQUssT0FBQUMseUJBQUEsQ0FBQUMsT0FBQSxFQUFBUCxJQUFBLEVBQUFGLFNBQUE7RUFDbkcsTUFBTSxDQUFDVSxPQUFPLEVBQUVDLFFBQVEsRUFBRUMsR0FBRyxDQUFDLEdBQUcsSUFBQUMsaUNBQWlCLEVBQW1CLENBQUM7RUFFdEUsTUFBTUMsU0FBUyxHQUFJQyxDQUFzQixJQUFXO0lBQ2hELElBQUlDLE9BQU8sR0FBRyxJQUFJO0lBQ2xCLE1BQU1DLE1BQU0sR0FBRyxJQUFBQyx5Q0FBcUIsRUFBQyxDQUFDLENBQUNDLHNCQUFzQixDQUFDSixDQUFDLENBQUM7SUFFaEUsUUFBUUUsTUFBTTtNQUNWLEtBQUtHLG1DQUFnQixDQUFDQyxLQUFLO1FBQ3ZCaEIsUUFBUSxDQUFDLENBQUM7UUFDVjtNQUNKLEtBQUtlLG1DQUFnQixDQUFDRSxLQUFLO1FBQ3ZCakIsUUFBUSxDQUFDLENBQUM7UUFDVjtRQUNBQyxPQUFPLENBQUMsQ0FBQztRQUNUO01BQ0o7UUFDSVUsT0FBTyxHQUFHLEtBQUs7SUFDdkI7SUFFQSxJQUFJQSxPQUFPLEVBQUU7TUFDVEQsQ0FBQyxDQUFDUSxlQUFlLENBQUMsQ0FBQztNQUNuQlIsQ0FBQyxDQUFDUyxjQUFjLENBQUMsQ0FBQztJQUN0QjtFQUNKLENBQUM7RUFDRCxNQUFNQyxPQUFPLEdBQUlWLENBQXNCLElBQVc7SUFDOUMsTUFBTUUsTUFBTSxHQUFHLElBQUFDLHlDQUFxQixFQUFDLENBQUMsQ0FBQ0Msc0JBQXNCLENBQUNKLENBQUMsQ0FBQztJQUNoRSxRQUFRRSxNQUFNO01BQ1YsS0FBS0csbUNBQWdCLENBQUNDLEtBQUs7TUFDM0IsS0FBS0QsbUNBQWdCLENBQUNFLEtBQUs7UUFDdkI7UUFDQTtRQUNBUCxDQUFDLENBQUNRLGVBQWUsQ0FBQyxDQUFDO1FBQ25CUixDQUFDLENBQUNTLGNBQWMsQ0FBQyxDQUFDO1FBQ2xCO0lBQ1I7RUFDSixDQUFDO0VBQ0Qsb0JBQ0kvQixNQUFBLENBQUFnQixPQUFBLENBQUFpQixhQUFBLENBQUM3QixlQUFBLENBQUFZLE9BQWMsTUFBQWtCLFNBQUEsQ0FBQWxCLE9BQUEsTUFDUEYsS0FBSztJQUNUcUIsSUFBSSxFQUFDLGtCQUFrQjtJQUN2QixjQUFZeEIsS0FBTTtJQUNsQkMsUUFBUSxFQUFFQSxRQUFTO0lBQ25CUyxTQUFTLEVBQUVBLFNBQVU7SUFDckJXLE9BQU8sRUFBRUEsT0FBUTtJQUNqQmYsT0FBTyxFQUFFQSxPQUFRO0lBQ2pCbUIsUUFBUSxFQUFFakIsR0FBSTtJQUNka0IsUUFBUSxFQUFFbkIsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDO0VBQUUsSUFFM0JSLFFBQ1csQ0FBQztBQUV6QixDQUFDO0FBQUM0QixPQUFBLENBQUE5QixzQkFBQSxHQUFBQSxzQkFBQSIsImlnbm9yZUxpc3QiOltdfQ==