@pnp/spfx-controls-react
Version:
Reusable React controls for SharePoint Framework solutions
64 lines • 2.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var React = tslib_1.__importStar(require("react"));
var focus_1 = require("../helpers/focus");
var keycodes_1 = tslib_1.__importDefault(require("../helpers/keycodes"));
var uuid_1 = require("../helpers/uuid");
var ItemContext_1 = require("./ItemContext");
var AccordionItemButton = function (_a) {
var toggleExpanded = _a.toggleExpanded, _b = _a.className, className = _b === void 0 ? 'accordion__button' : _b, rest = tslib_1.__rest(_a, ["toggleExpanded", "className"]);
var handleKeyPress = function (evt) {
var keyCode = evt.key;
if (keyCode === keycodes_1.default.ENTER ||
keyCode === keycodes_1.default.SPACE ||
keyCode === keycodes_1.default.SPACE_DEPRECATED) {
evt.preventDefault();
toggleExpanded();
}
/* The following block is ignored from test coverage because at time
* time of writing Jest/react-testing-library can not assert 'focus'
* functionality.
*/
// istanbul ignore next
if (evt.target instanceof HTMLElement) {
switch (keyCode) {
case keycodes_1.default.HOME: {
evt.preventDefault();
(0, focus_1.focusFirstSiblingOf)(evt.target);
break;
}
case keycodes_1.default.END: {
evt.preventDefault();
(0, focus_1.focusLastSiblingOf)(evt.target);
break;
}
case keycodes_1.default.LEFT:
case keycodes_1.default.UP: {
evt.preventDefault();
(0, focus_1.focusPreviousSiblingOf)(evt.target);
break;
}
case keycodes_1.default.RIGHT:
case keycodes_1.default.DOWN: {
evt.preventDefault();
(0, focus_1.focusNextSiblingOf)(evt.target);
break;
}
default: {
//
}
}
}
};
if (rest.id) {
(0, uuid_1.assertValidHtmlId)(rest.id);
}
return (React.createElement("div", tslib_1.__assign({ className: className }, rest, { role: "button", tabIndex: 0, onClick: toggleExpanded, onKeyDown: handleKeyPress, "data-accordion-component": "AccordionItemButton" })));
};
var AccordionItemButtonWrapper = function (props) { return (React.createElement(ItemContext_1.Consumer, null, function (itemContext) {
var toggleExpanded = itemContext.toggleExpanded, buttonAttributes = itemContext.buttonAttributes;
return (React.createElement(AccordionItemButton, tslib_1.__assign({ toggleExpanded: toggleExpanded }, props, buttonAttributes)));
})); };
exports.default = AccordionItemButtonWrapper;
//# sourceMappingURL=AccordionItemButton.js.map