matrix-react-sdk
Version:
SDK for matrix.org using React
79 lines (77 loc) • 9.62 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.StyledMenuItemRadio = 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 _StyledRadioButton = _interopRequireDefault(require("../../components/views/elements/StyledRadioButton"));
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=menuitemradio
const StyledMenuItemRadio = _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.Enter:
case _KeyboardShortcuts.KeyBindingAction.Space:
// 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(_StyledRadioButton.default, (0, _extends2.default)({}, props, {
role: "menuitemradio",
"aria-label": label,
onChange: onChange,
onKeyDown: onKeyDown,
onKeyUp: onKeyUp,
onFocus: onFocus,
inputRef: ref,
tabIndex: isActive ? 0 : -1
}), children);
};
exports.StyledMenuItemRadio = StyledMenuItemRadio;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9Sb3ZpbmdUYWJJbmRleCIsIl9TdHlsZWRSYWRpb0J1dHRvbiIsIl9LZXlib2FyZFNob3J0Y3V0cyIsIl9LZXlCaW5kaW5nc01hbmFnZXIiLCJfZXhjbHVkZWQiLCJTdHlsZWRNZW51SXRlbVJhZGlvIiwiX3JlZiIsImNoaWxkcmVuIiwibGFiZWwiLCJvbkNoYW5nZSIsIm9uQ2xvc2UiLCJwcm9wcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllczIiLCJkZWZhdWx0Iiwib25Gb2N1cyIsImlzQWN0aXZlIiwicmVmIiwidXNlUm92aW5nVGFiSW5kZXgiLCJvbktleURvd24iLCJlIiwiaGFuZGxlZCIsImFjdGlvbiIsImdldEtleUJpbmRpbmdzTWFuYWdlciIsImdldEFjY2Vzc2liaWxpdHlBY3Rpb24iLCJLZXlCaW5kaW5nQWN0aW9uIiwiU3BhY2UiLCJFbnRlciIsInN0b3BQcm9wYWdhdGlvbiIsInByZXZlbnREZWZhdWx0Iiwib25LZXlVcCIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kczIiLCJyb2xlIiwiaW5wdXRSZWYiLCJ0YWJJbmRleCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWNjZXNzaWJpbGl0eS9jb250ZXh0X21lbnUvU3R5bGVkTWVudUl0ZW1SYWRpby50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMTkgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cbkNvcHlyaWdodCAyMDE4IE5ldyBWZWN0b3IgTHRkXG5Db3B5cmlnaHQgMjAxNSwgMjAxNiBPcGVuTWFya2V0IEx0ZFxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IHVzZVJvdmluZ1RhYkluZGV4IH0gZnJvbSBcIi4uL1JvdmluZ1RhYkluZGV4XCI7XG5pbXBvcnQgU3R5bGVkUmFkaW9CdXR0b24gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdmlld3MvZWxlbWVudHMvU3R5bGVkUmFkaW9CdXR0b25cIjtcbmltcG9ydCB7IEtleUJpbmRpbmdBY3Rpb24gfSBmcm9tIFwiLi4vS2V5Ym9hcmRTaG9ydGN1dHNcIjtcbmltcG9ydCB7IGdldEtleUJpbmRpbmdzTWFuYWdlciB9IGZyb20gXCIuLi8uLi9LZXlCaW5kaW5nc01hbmFnZXJcIjtcblxuaW50ZXJmYWNlIElQcm9wcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBTdHlsZWRSYWRpb0J1dHRvbj4ge1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG9uQ2hhbmdlKCk6IHZvaWQ7IC8vIHdlIGhhbmRsZSBrZXl1cC9kb3duIG91cnNlbHZlcyBzbyBsb3NlIHRoZSBDaGFuZ2VFdmVudFxuICAgIG9uQ2xvc2UoKTogdm9pZDsgLy8gZ2V0cyBjYWxsZWQgYWZ0ZXIgb25DaGFuZ2Ugb24gS2V5QmluZGluZ0FjdGlvbi5FbnRlclxufVxuXG4vLyBTZW1hbnRpYyBjb21wb25lbnQgZm9yIHJlcHJlc2VudGluZyBhIHN0eWxlZCByb2xlPW1lbnVpdGVtcmFkaW9cbmV4cG9ydCBjb25zdCBTdHlsZWRNZW51SXRlbVJhZGlvOiBSZWFjdC5GQzxJUHJvcHM+ID0gKHsgY2hpbGRyZW4sIGxhYmVsLCBvbkNoYW5nZSwgb25DbG9zZSwgLi4ucHJvcHMgfSkgPT4ge1xuICAgIGNvbnN0IFtvbkZvY3VzLCBpc0FjdGl2ZSwgcmVmXSA9IHVzZVJvdmluZ1RhYkluZGV4PEhUTUxJbnB1dEVsZW1lbnQ+KCk7XG5cbiAgICBjb25zdCBvbktleURvd24gPSAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICBsZXQgaGFuZGxlZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IGdldEtleUJpbmRpbmdzTWFuYWdlcigpLmdldEFjY2Vzc2liaWxpdHlBY3Rpb24oZSk7XG5cbiAgICAgICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgICAgICAgIGNhc2UgS2V5QmluZGluZ0FjdGlvbi5TcGFjZTpcbiAgICAgICAgICAgICAgICBvbkNoYW5nZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBLZXlCaW5kaW5nQWN0aW9uLkVudGVyOlxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlKCk7XG4gICAgICAgICAgICAgICAgLy8gSW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtcHJhY3RpY2VzLyNrZXlib2FyZC1pbnRlcmFjdGlvbi0xMlxuICAgICAgICAgICAgICAgIG9uQ2xvc2UoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaGFuZGxlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhbmRsZWQpIHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IG9uS2V5VXAgPSAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBnZXRLZXlCaW5kaW5nc01hbmFnZXIoKS5nZXRBY2Nlc3NpYmlsaXR5QWN0aW9uKGUpO1xuICAgICAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgICAgICAgY2FzZSBLZXlCaW5kaW5nQWN0aW9uLkVudGVyOlxuICAgICAgICAgICAgY2FzZSBLZXlCaW5kaW5nQWN0aW9uLlNwYWNlOlxuICAgICAgICAgICAgICAgIC8vIHByZXZlbnQgdGhlIGlucHV0IGRlZmF1bHQgaGFuZGxlciBhcyB3ZSBoYW5kbGUgaXQgb24ga2V5ZG93biB0byBtYXRjaFxuICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS1wcmFjdGljZXMvZXhhbXBsZXMvbWVudWJhci9tZW51YmFyLTIvbWVudWJhci0yLmh0bWxcbiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZFJhZGlvQnV0dG9uXG4gICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgICAgICByb2xlPVwibWVudWl0ZW1yYWRpb1wiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPXtsYWJlbH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgICAgICAgb25LZXlVcD17b25LZXlVcH1cbiAgICAgICAgICAgIG9uRm9jdXM9e29uRm9jdXN9XG4gICAgICAgICAgICBpbnB1dFJlZj17cmVmfVxuICAgICAgICAgICAgdGFiSW5kZXg9e2lzQWN0aXZlID8gMCA6IC0xfVxuICAgICAgICA+XG4gICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvU3R5bGVkUmFkaW9CdXR0b24+XG4gICAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVVBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLGVBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGtCQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxrQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksbUJBQUEsR0FBQUosT0FBQTtBQUFpRSxNQUFBSyxTQUFBO0FBZmpFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWVBO0FBQ08sTUFBTUMsbUJBQXFDLEdBQUdDLElBQUEsSUFBc0Q7RUFBQSxJQUFyRDtNQUFFQyxRQUFRO01BQUVDLEtBQUs7TUFBRUMsUUFBUTtNQUFFQztJQUFrQixDQUFDLEdBQUFKLElBQUE7SUFBUEssS0FBSyxPQUFBQyx5QkFBQSxDQUFBQyxPQUFBLEVBQUFQLElBQUEsRUFBQUYsU0FBQTtFQUNoRyxNQUFNLENBQUNVLE9BQU8sRUFBRUMsUUFBUSxFQUFFQyxHQUFHLENBQUMsR0FBRyxJQUFBQyxpQ0FBaUIsRUFBbUIsQ0FBQztFQUV0RSxNQUFNQyxTQUFTLEdBQUlDLENBQXNCLElBQVc7SUFDaEQsSUFBSUMsT0FBTyxHQUFHLElBQUk7SUFDbEIsTUFBTUMsTUFBTSxHQUFHLElBQUFDLHlDQUFxQixFQUFDLENBQUMsQ0FBQ0Msc0JBQXNCLENBQUNKLENBQUMsQ0FBQztJQUVoRSxRQUFRRSxNQUFNO01BQ1YsS0FBS0csbUNBQWdCLENBQUNDLEtBQUs7UUFDdkJoQixRQUFRLENBQUMsQ0FBQztRQUNWO01BQ0osS0FBS2UsbUNBQWdCLENBQUNFLEtBQUs7UUFDdkJqQixRQUFRLENBQUMsQ0FBQztRQUNWO1FBQ0FDLE9BQU8sQ0FBQyxDQUFDO1FBQ1Q7TUFDSjtRQUNJVSxPQUFPLEdBQUcsS0FBSztJQUN2QjtJQUVBLElBQUlBLE9BQU8sRUFBRTtNQUNURCxDQUFDLENBQUNRLGVBQWUsQ0FBQyxDQUFDO01BQ25CUixDQUFDLENBQUNTLGNBQWMsQ0FBQyxDQUFDO0lBQ3RCO0VBQ0osQ0FBQztFQUNELE1BQU1DLE9BQU8sR0FBSVYsQ0FBc0IsSUFBVztJQUM5QyxNQUFNRSxNQUFNLEdBQUcsSUFBQUMseUNBQXFCLEVBQUMsQ0FBQyxDQUFDQyxzQkFBc0IsQ0FBQ0osQ0FBQyxDQUFDO0lBQ2hFLFFBQVFFLE1BQU07TUFDVixLQUFLRyxtQ0FBZ0IsQ0FBQ0UsS0FBSztNQUMzQixLQUFLRixtQ0FBZ0IsQ0FBQ0MsS0FBSztRQUN2QjtRQUNBO1FBQ0FOLENBQUMsQ0FBQ1EsZUFBZSxDQUFDLENBQUM7UUFDbkJSLENBQUMsQ0FBQ1MsY0FBYyxDQUFDLENBQUM7UUFDbEI7SUFDUjtFQUNKLENBQUM7RUFDRCxvQkFDSS9CLE1BQUEsQ0FBQWdCLE9BQUEsQ0FBQWlCLGFBQUEsQ0FBQzdCLGtCQUFBLENBQUFZLE9BQWlCLE1BQUFrQixTQUFBLENBQUFsQixPQUFBLE1BQ1ZGLEtBQUs7SUFDVHFCLElBQUksRUFBQyxlQUFlO0lBQ3BCLGNBQVl4QixLQUFNO0lBQ2xCQyxRQUFRLEVBQUVBLFFBQVM7SUFDbkJTLFNBQVMsRUFBRUEsU0FBVTtJQUNyQlcsT0FBTyxFQUFFQSxPQUFRO0lBQ2pCZixPQUFPLEVBQUVBLE9BQVE7SUFDakJtQixRQUFRLEVBQUVqQixHQUFJO0lBQ2RrQixRQUFRLEVBQUVuQixRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUM7RUFBRSxJQUUzQlIsUUFDYyxDQUFDO0FBRTVCLENBQUM7QUFBQzRCLE9BQUEsQ0FBQTlCLG1CQUFBLEdBQUFBLG1CQUFBIiwiaWdub3JlTGlzdCI6W119