diff --git a/dist/reactComponents/Radio.d.ts b/dist/reactComponents/Radio.d.ts index b2d78ac61aaa31647738776584cd35c508710c6e..07ef8a9c613bf8f3d9964d9f8fa34e117fd7f9c1 100644 --- a/dist/reactComponents/Radio.d.ts +++ b/dist/reactComponents/Radio.d.ts @@ -3,21 +3,23 @@ */ import React = require("react"); import 'jquery-ui'; -export interface iRadioItem { +export interface iRadioItemOpt { + index?: number; +} +export interface iRadioItem extends iRadioItemOpt { groupId: string; text: string; checked: boolean; inline: boolean; change: (s: string) => any; - connected: boolean; - index: number; + connected?: boolean; } export declare class Radio extends React.Component<{ title: string; items: string[]; callback: (val: string) => any; - inline?: boolean; defaultValue: string; + inline?: boolean; classes?: string[]; }, {}> { render(): JSX.Element; diff --git a/dist/reactComponents/Radio.js b/dist/reactComponents/Radio.js index dfb445bede7300e9ff83e2239dc165e443d06903..9b880dddf0b53170da1b22bb56dca5a6e0fff01c 100644 --- a/dist/reactComponents/Radio.js +++ b/dist/reactComponents/Radio.js @@ -42,10 +42,6 @@ class RadioItem extends React.Component { React.createElement("label", { htmlFor: this.guid }, this.props.text)); } } -RadioItem.defaultProps = { - connected: false, - index: null -}; class RadioBase extends React.Component { constructor(props, context) { super(props, context); @@ -83,9 +79,29 @@ class RadioBase extends React.Component { React.createElement("ul", { style: { listStyle: 'none' } }, arr)); } } -RadioBase.defaultProps = { - inline: false -}; +// +// interface _iRadioBaseOpt { +// inline?: boolean; +// classes?: string[]; +// } +// +// interface _iRadioBase extends _iRadioBaseOpt{ +// title: string; +// items: string[]; +// callback: (val: string) => any; +// connected: boolean; +// } +// +// interface iRadioBase extends _iRadioBase{ +// selectedValueOrIndex: string|number; +// } +// interface iRadio { +// title: string; +// items: string[]; +// callback: (val: string) => any; +// inline?: boolean; +// classes?: string[]; +// } 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 }); diff --git a/dist/reactComponents/Radio.js.map b/dist/reactComponents/Radio.js.map index 9222f41c04567a24da5e058251769a6d767fc82f..ed0fedc8292080e6ca0a9e0fb3b817674f632aa4 100644 --- a/dist/reactComponents/Radio.js.map +++ b/dist/reactComponents/Radio.js.map @@ -1 +1 @@ -{"version":3,"file":"Radio.js","sourceRoot":"","sources":["../../src/reactComponents/Radio.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Created by glenn on 6/12/2017.\r\n */\r\n\r\n\r\nimport React = require(\"react\");\r\n\r\nimport $ = require('jquery');\r\nimport 'jquery-ui';\r\nimport makeGuid from '../util/makeGuid';\r\nimport {ChangeEvent} from \"react\";\r\n\r\nexport interface iRadioItem{\r\n groupId: string;\r\n text: string;\r\n checked: boolean;\r\n inline: boolean;\r\n change: (s: string) => any;\r\n connected: boolean;\r\n index: number\r\n}\r\n\r\nclass RadioItem extends React.Component<iRadioItem, {}> {\r\n static defaultProps = {\r\n connected: false,\r\n index: null\r\n }\r\n\r\n guid: string;\r\n\r\n constructor(props: iRadioItem, context: Object){\r\n super(props, context);\r\n this.guid = makeGuid()\r\n }\r\n\r\n\r\n render() {\r\n let style = {};\r\n if (this.props.inline) {\r\n style = {\r\n display: 'inline-block',\r\n padding: '0 5px'\r\n };\r\n }\r\n\r\n let props = {\r\n id: this.guid,\r\n type: \"radio\",\r\n name: this.props.groupId,\r\n value: typeof this.props.index == 'undefined' ? this.props.text : this.props.index.toFixed(),\r\n onChange: (evt: ChangeEvent<HTMLInputElement>) => {\r\n this.props.change(evt.target.value);\r\n evt.target.checked = true;\r\n },\r\n checked: this.props.checked,\r\n defaultChecked: this.props.checked\r\n };\r\n\r\n if (this.props.connected) {\r\n delete props.defaultChecked;\r\n } else {\r\n delete props.checked\r\n }\r\n\r\n return <li style={style}>\r\n <input {...props}/>\r\n <label htmlFor={this.guid}>{this.props.text}</label>\r\n </li>;\r\n }\r\n}\r\n\r\ninterface iRadioBase {\r\n title: string;\r\n items: string[];\r\n callback: (val: string) => any;\r\n inline: boolean;\r\n selectedValueOrIndex: string|number;\r\n connected: boolean;\r\n classes?: string[]\r\n}\r\n\r\nclass RadioBase extends React.Component<iRadioBase, {}> {\r\n static defaultProps = {\r\n inline: false\r\n };\r\n\r\n inline: boolean;\r\n groupId: string;\r\n\r\n constructor(props: iRadioBase, context: Object) {\r\n super(props, context);\r\n this.inline = this.props.inline || false;\r\n this.groupId = this.props.title.toLowerCase().replace(/ /g, '');\r\n }\r\n\r\n render() {\r\n\r\n let arr = [];\r\n\r\n for (let i = 0; i < this.props.items.length; i++) {\r\n\r\n let itemProps = {\r\n groupId: this.groupId,\r\n text: this.props.items[i],\r\n inline: this.props.inline,\r\n change: (s: string) => (this.props.callback(s)),\r\n key: this.props.items[i],\r\n connected: this.props.connected || false,\r\n checked: false,\r\n index: i\r\n };\r\n\r\n if (typeof this.props.selectedValueOrIndex == 'number'){\r\n itemProps.checked = i == this.props.selectedValueOrIndex;\r\n } else {\r\n itemProps.checked = this.props.items[i] == this.props.selectedValueOrIndex;\r\n delete itemProps.index\r\n }\r\n\r\n arr.push(<RadioItem {...itemProps}/>)\r\n }\r\n\r\n let classes = ['radio-list'];\r\n\r\n if (this.props.classes){\r\n classes = classes.concat(this.props.classes);\r\n }\r\n\r\n return <div className={classes.join(' ')}>\r\n <h4>{this.props.title}</h4>\r\n <ul style={{listStyle: 'none'}}>\r\n {arr}\r\n </ul>\r\n </div>\r\n }\r\n}\r\n\r\n\r\nexport class Radio extends React.Component<{\r\n title: string, items: string[], callback: (val: string) => any, inline?: boolean,\r\n defaultValue: string, classes?: string[] }, {}> {\r\n\r\n render() {\r\n\r\n return <RadioBase\r\n title={this.props.title}\r\n items={this.props.items}\r\n callback={this.props.callback}\r\n inline={this.props.inline}\r\n selectedValueOrIndex={this.props.defaultValue}\r\n connected={false}\r\n classes={this.props.classes}\r\n />\r\n }\r\n}\r\n\r\nexport class RadioConnected extends React.Component<{\r\n title: string, items: string[], callback: (val: string) => any, inline?: boolean,\r\n selectedIndex: number, classes?: string[] }, {}> {\r\n\r\n render() {\r\n return <RadioBase\r\n title={this.props.title}\r\n items={this.props.items}\r\n callback={this.props.callback}\r\n inline={this.props.inline}\r\n selectedValueOrIndex={this.props.selectedIndex}\r\n connected={true}\r\n classes={this.props.classes}\r\n />\r\n }\r\n}"]} \ No newline at end of file +{"version":3,"file":"Radio.js","sourceRoot":"","sources":["../../src/reactComponents/Radio.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Created by glenn on 6/12/2017.\r\n */\r\n\r\n\r\nimport React = require(\"react\");\r\n\r\nimport $ = require('jquery');\r\nimport 'jquery-ui';\r\nimport makeGuid from '../util/makeGuid';\r\nimport {ChangeEvent} from \"react\";\r\n\r\nexport interface iRadioItemOpt {\r\n index?: number\r\n}\r\n\r\nexport interface iRadioItem extends iRadioItemOpt{\r\n groupId: string;\r\n text: string;\r\n checked: boolean;\r\n inline: boolean;\r\n change: (s: string) => any;\r\n connected?: boolean;\r\n\r\n}\r\n\r\nclass RadioItem extends React.Component<iRadioItem, {}> {\r\n guid: string;\r\n\r\n constructor(props: iRadioItem, context: Object){\r\n super(props, context);\r\n this.guid = makeGuid()\r\n }\r\n\r\n\r\n render() {\r\n let style = {};\r\n if (this.props.inline) {\r\n style = {\r\n display: 'inline-block',\r\n padding: '0 5px'\r\n };\r\n }\r\n\r\n let props = {\r\n id: this.guid,\r\n type: \"radio\",\r\n name: this.props.groupId,\r\n value: typeof this.props.index == 'undefined' ? this.props.text : this.props.index.toFixed(),\r\n onChange: (evt: ChangeEvent<HTMLInputElement>) => {\r\n this.props.change(evt.target.value);\r\n evt.target.checked = true;\r\n },\r\n checked: this.props.checked,\r\n defaultChecked: this.props.checked\r\n };\r\n\r\n if (this.props.connected) {\r\n delete props.defaultChecked;\r\n } else {\r\n delete props.checked\r\n }\r\n\r\n return <li style={style}>\r\n <input {...props}/>\r\n <label htmlFor={this.guid}>{this.props.text}</label>\r\n </li>;\r\n }\r\n}\r\n\r\ninterface _iRadioBaseOpt {\r\n inline?: boolean;\r\n classes?: string[];\r\n}\r\n\r\ninterface _iRadioBase extends _iRadioBaseOpt{\r\n title: string;\r\n items: string[];\r\n callback: (val: string) => any;\r\n connected: boolean;\r\n}\r\n\r\ninterface iRadioBase extends _iRadioBase{\r\n selectedValueOrIndex: string|number;\r\n}\r\n\r\nclass RadioBase extends React.Component<iRadioBase, {}> {\r\n inline: boolean;\r\n groupId: string;\r\n\r\n constructor(props: iRadioBase, context: Object) {\r\n super(props, context);\r\n this.inline = this.props.inline || false;\r\n this.groupId = this.props.title.toLowerCase().replace(/ /g, '');\r\n }\r\n\r\n render() {\r\n\r\n let arr = [];\r\n\r\n for (let i = 0; i < this.props.items.length; i++) {\r\n\r\n let itemProps = {\r\n groupId: this.groupId,\r\n text: this.props.items[i],\r\n inline: this.props.inline,\r\n change: (s: string) => (this.props.callback(s)),\r\n key: this.props.items[i],\r\n connected: this.props.connected || false,\r\n checked: false,\r\n index: i\r\n };\r\n\r\n if (typeof this.props.selectedValueOrIndex == 'number'){\r\n itemProps.checked = i == this.props.selectedValueOrIndex;\r\n } else {\r\n itemProps.checked = this.props.items[i] == this.props.selectedValueOrIndex;\r\n delete itemProps.index\r\n }\r\n\r\n arr.push(<RadioItem {...itemProps}/>)\r\n }\r\n\r\n let classes = ['radio-list'];\r\n\r\n if (this.props.classes){\r\n classes = classes.concat(this.props.classes);\r\n }\r\n\r\n return <div className={classes.join(' ')}>\r\n <h4>{this.props.title}</h4>\r\n <ul style={{listStyle: 'none'}}>\r\n {arr}\r\n </ul>\r\n </div>\r\n }\r\n}\r\n\r\n//\r\n// interface _iRadioBaseOpt {\r\n// inline?: boolean;\r\n// classes?: string[];\r\n// }\r\n//\r\n// interface _iRadioBase extends _iRadioBaseOpt{\r\n// title: string;\r\n// items: string[];\r\n// callback: (val: string) => any;\r\n// connected: boolean;\r\n// }\r\n//\r\n// interface iRadioBase extends _iRadioBase{\r\n// selectedValueOrIndex: string|number;\r\n// }\r\n\r\n// interface iRadio {\r\n// title: string;\r\n// items: string[];\r\n// callback: (val: string) => any;\r\n// inline?: boolean;\r\n// classes?: string[];\r\n// }\r\n\r\n\r\n\r\n\r\n\r\n\r\nexport class Radio extends React.Component<{\r\n title: string,\r\n items: string[],\r\n callback: (val: string) => any,\r\n defaultValue: string,\r\n inline?: boolean,\r\n classes?: string[] }, {}> {\r\n\r\n render() {\r\n\r\n return <RadioBase\r\n title={this.props.title}\r\n items={this.props.items}\r\n callback={this.props.callback}\r\n inline={this.props.inline}\r\n selectedValueOrIndex={this.props.defaultValue}\r\n connected={false}\r\n classes={this.props.classes}\r\n />\r\n }\r\n}\r\n\r\nexport class RadioConnected extends React.Component<{\r\n title: string,\r\n items: string[],\r\n callback: (val: string) => any,\r\n inline?: boolean,\r\n selectedIndex: number,\r\n classes?: string[] }, {}> {\r\n\r\n render() {\r\n return <RadioBase\r\n title={this.props.title}\r\n items={this.props.items}\r\n callback={this.props.callback}\r\n inline={this.props.inline}\r\n selectedValueOrIndex={this.props.selectedIndex}\r\n connected={true}\r\n classes={this.props.classes}\r\n />\r\n }\r\n}"]} \ No newline at end of file diff --git a/src/reactComponents/Radio.tsx b/src/reactComponents/Radio.tsx index ba77e84cbf91fe17022882f520b5ebd36d63c44c..cc2ee07691538f85f273808f33bcd2fa68d0af3d 100644 --- a/src/reactComponents/Radio.tsx +++ b/src/reactComponents/Radio.tsx @@ -10,22 +10,21 @@ import 'jquery-ui'; import makeGuid from '../util/makeGuid'; import {ChangeEvent} from "react"; -export interface iRadioItem{ +export interface iRadioItemOpt { + index?: number +} + +export interface iRadioItem extends iRadioItemOpt{ groupId: string; text: string; checked: boolean; inline: boolean; change: (s: string) => any; - connected: boolean; - index: number + connected?: boolean; + } class RadioItem extends React.Component<iRadioItem, {}> { - static defaultProps = { - connected: false, - index: null - } - guid: string; constructor(props: iRadioItem, context: Object){ @@ -69,21 +68,23 @@ class RadioItem extends React.Component<iRadioItem, {}> { } } -interface iRadioBase { +interface _iRadioBaseOpt { + inline?: boolean; + classes?: string[]; +} + +interface _iRadioBase extends _iRadioBaseOpt{ title: string; items: string[]; callback: (val: string) => any; - inline: boolean; - selectedValueOrIndex: string|number; connected: boolean; - classes?: string[] } -class RadioBase extends React.Component<iRadioBase, {}> { - static defaultProps = { - inline: false - }; +interface iRadioBase extends _iRadioBase{ + selectedValueOrIndex: string|number; +} +class RadioBase extends React.Component<iRadioBase, {}> { inline: boolean; groupId: string; @@ -135,10 +136,43 @@ class RadioBase extends React.Component<iRadioBase, {}> { } } +// +// interface _iRadioBaseOpt { +// inline?: boolean; +// classes?: string[]; +// } +// +// interface _iRadioBase extends _iRadioBaseOpt{ +// title: string; +// items: string[]; +// callback: (val: string) => any; +// connected: boolean; +// } +// +// interface iRadioBase extends _iRadioBase{ +// selectedValueOrIndex: string|number; +// } + +// interface iRadio { +// title: string; +// items: string[]; +// callback: (val: string) => any; +// inline?: boolean; +// classes?: string[]; +// } + + + + + export class Radio extends React.Component<{ - title: string, items: string[], callback: (val: string) => any, inline?: boolean, - defaultValue: string, classes?: string[] }, {}> { + title: string, + items: string[], + callback: (val: string) => any, + defaultValue: string, + inline?: boolean, + classes?: string[] }, {}> { render() { @@ -155,8 +189,12 @@ export class Radio extends React.Component<{ } export class RadioConnected extends React.Component<{ - title: string, items: string[], callback: (val: string) => any, inline?: boolean, - selectedIndex: number, classes?: string[] }, {}> { + title: string, + items: string[], + callback: (val: string) => any, + inline?: boolean, + selectedIndex: number, + classes?: string[] }, {}> { render() { return <RadioBase