@uifabric/experiments
Version:
Experimental React components for building experiences for Office 365.
68 lines • 2.81 kB
JavaScript
;
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