"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var React = require("react");
var ReactDOM = require("react-dom");
var Utilities_1 = require("../../../Utilities");
var Button_Basic_Example_styles_1 = require("./Button.Basic.Example.styles");
var Button_1 = require("office-ui-fabric-react/lib/Button");
var ButtonSwapExample = /** @class */ (function (_super) {
    tslib_1.__extends(ButtonSwapExample, _super);
    function ButtonSwapExample(props) {
        var _this = _super.call(this, props) || this;
        _this._setButtonRef = function (ref) {
            _this.buttonRef = ReactDOM.findDOMNode(ref);
        };
        _this._onClick = function () {
            // change the button type on click
            _this.setState({ isPrimary: !_this.state.isPrimary });
        };
        _this.hasFocus = false;
        _this.buttonRef = null;
        _this.state = {
            isPrimary: true
        };
        return _this;
    }
    ButtonSwapExample.prototype.componentWillUpdate = function (nextProps, nextState) {
        // check to see if our button element has focus
        this.hasFocus = document.activeElement === this.buttonRef;
    };
    ButtonSwapExample.prototype.componentDidUpdate = function (prevProps, prevState) {
        // if our button previously had focus but we lost it
        // because we switched the control type, we need to set focus again
        if (this.hasFocus && document.activeElement !== this.buttonRef) {
            this.buttonRef.focus();
        }
    };
    ButtonSwapExample.prototype.render = function () {
        var isPrimary = this.state.isPrimary;
        var _a = this.props, disabled = _a.disabled, checked = _a.checked;
        var text = 'Swap';
        // determine which button to render
        var button = isPrimary ? (React.createElement(Button_1.PrimaryButton, { ref: this._setButtonRef, disabled: disabled, checked: checked, onClick: this._onClick }, text)) : (React.createElement(Button_1.DefaultButton, { ref: this._setButtonRef, disabled: disabled, checked: checked, onClick: this._onClick }, text));
        var getClassNames = Utilities_1.classNamesFunction();
        var classNames = getClassNames(Button_Basic_Example_styles_1.getStyles);
        return React.createElement("div", { className: Utilities_1.css(classNames.example) }, button);
    };
    return ButtonSwapExample;
}(React.Component));
exports.ButtonSwapExample = ButtonSwapExample;
//# sourceMappingURL=Button.Swap.Example.js.map