UNPKG

@uifabric/experiments

Version:

Experimental React components for building experiences for Office 365.

68 lines 2.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var React = require("react"); var BaseState_1 = require("../../utilities/BaseState"); var Utilities_1 = require("../../Utilities"); var CollapsibleSectionState = /** @class */ (function (_super) { tslib_1.__extends(CollapsibleSectionState, _super); function CollapsibleSectionState(props) { var _this = _super.call(this, props, { controlledProps: ['collapsed'] }) || this; _this._titleElement = React.createRef(); _this._onClick = function (ev) { _this.setState({ collapsed: !_this.state.collapsed }); ev.preventDefault(); ev.stopPropagation(); }; _this._onRootKeyDown = function (ev) { var rootKey = Utilities_1.getRTL() ? Utilities_1.KeyCodes.right : Utilities_1.KeyCodes.left; switch (ev.which) { case rootKey: if (_this._titleElement && _this._titleElement.current && ev.target !== _this._titleElement.current) { _this._titleElement.current.focus(); ev.preventDefault(); ev.stopPropagation(); } break; default: break; } }; _this._onKeyDown = function (ev) { var collapsed = _this.state.collapsed; var collapseKey = Utilities_1.getRTL() ? Utilities_1.KeyCodes.right : Utilities_1.KeyCodes.left; var expandKey = Utilities_1.getRTL() ? Utilities_1.KeyCodes.left : Utilities_1.KeyCodes.right; switch (ev.which) { case collapseKey: if (!collapsed) { _this.setState({ collapsed: true }); break; } return; case expandKey: if (collapsed) { _this.setState({ collapsed: false }); break; } return; default: return; } ev.preventDefault(); ev.stopPropagation(); }; _this.state = { collapsed: !!props.defaultCollapsed, onClick: _this._onClick, onKeyDown: _this._onKeyDown, onRootKeyDown: _this._onRootKeyDown, titleElementRef: _this._titleElement }; return _this; } return CollapsibleSectionState; }(BaseState_1.BaseState)); exports.CollapsibleSectionState = CollapsibleSectionState; //# sourceMappingURL=CollapsibleSection.state.js.map