@uifabric/experiments
Version:
Experimental React components for building experiences for Office 365.
66 lines • 3.07 kB
JavaScript
define(["require", "exports", "tslib", "react", "../../utilities/BaseState", "../../Utilities"], function (require, exports, tslib_1, React, BaseState_1, Utilities_1) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
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