"use strict";
/**
 * Created by glenn on 6/12/2017.
 */
Object.defineProperty(exports, "__esModule", { value: true });
const React = require("react");
require("jquery-ui");
const makeGuid_1 = require("../util/makeGuid");
class RadioItem extends React.Component {
    constructor(props, context) {
        super(props, context);
        this.guid = makeGuid_1.default();
    }
    render() {
        let style = {};
        if (this.props.inline) {
            style = {
                display: 'inline-block',
                padding: '0 5px'
            };
        }
        let props = {
            id: this.guid,
            type: "radio",
            name: this.props.groupId,
            value: typeof this.props.index == 'undefined' ? this.props.text : this.props.index.toFixed(),
            onChange: (evt) => {
                this.props.change(evt.target.value);
                evt.target.checked = true;
            },
            checked: this.props.checked,
            defaultChecked: this.props.checked
        };
        if (this.props.connected) {
            delete props.defaultChecked;
        }
        else {
            delete props.checked;
        }
        return React.createElement("li", { style: style },
            React.createElement("input", Object.assign({}, props)),
            React.createElement("label", { htmlFor: this.guid }, this.props.text));
    }
}
class RadioBase extends React.Component {
    constructor(props, context) {
        super(props, context);
        this.inline = this.props.inline || false;
        this.groupId = this.props.title.toLowerCase().replace(/ /g, '');
    }
    render() {
        let arr = [];
        for (let i = 0; i < this.props.items.length; i++) {
            let itemProps = {
                groupId: this.groupId,
                text: this.props.items[i],
                inline: this.props.inline,
                change: (s) => (this.props.callback(s)),
                key: this.props.items[i],
                connected: this.props.connected || false,
                checked: false,
                index: i
            };
            if (typeof this.props.selectedValueOrIndex == 'number') {
                itemProps.checked = i == this.props.selectedValueOrIndex;
            }
            else {
                itemProps.checked = this.props.items[i] == this.props.selectedValueOrIndex;
                delete itemProps.index;
            }
            arr.push(React.createElement(RadioItem, Object.assign({}, itemProps)));
        }
        let classes = ['radio-list'];
        if (this.props.classes) {
            classes = classes.concat(this.props.classes);
        }
        return React.createElement("div", { className: classes.join(' ') },
            React.createElement("h4", null, this.props.title),
            React.createElement("ul", { style: { listStyle: 'none' } }, arr));
    }
}
class Radio extends React.Component {
    render() {
        return React.createElement(RadioBase, { title: this.props.title, items: this.props.items, callback: this.props.callback, inline: this.props.inline, selectedValueOrIndex: this.props.defaultValue, connected: false, classes: this.props.classes });
    }
}
exports.Radio = Radio;
class RadioConnected extends React.Component {
    render() {
        return React.createElement(RadioBase, { title: this.props.title, items: this.props.items, callback: this.props.callback, inline: this.props.inline, selectedValueOrIndex: this.props.selectedIndex, connected: true, classes: this.props.classes });
    }
}
exports.RadioConnected = RadioConnected;
//# sourceMappingURL=Radio.js.map