@uifabric/experiments
Version:
Experimental React components for building experiences for Office 365.
66 lines • 2.6 kB
JavaScript
import * as tslib_1 from "tslib";
import * as React from 'react';
import { BaseState } from '../../utilities/BaseState';
import { getRTL, KeyCodes } from '../../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 = getRTL() ? KeyCodes.right : 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 = getRTL() ? KeyCodes.right : KeyCodes.left;
var expandKey = getRTL() ? KeyCodes.left : 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));
export { CollapsibleSectionState };
//# sourceMappingURL=CollapsibleSection.state.js.map