Rift.IO OSM R1 Initial Submission
[osm/UI.git] / skyquake / framework / widgets / form_controls / textInput.jsx
1 /*
2  * 
3  *   Copyright 2016 RIFT.IO Inc
4  *
5  *   Licensed under the Apache License, Version 2.0 (the "License");
6  *   you may not use this file except in compliance with the License.
7  *   You may obtain a copy of the License at
8  *
9  *       http://www.apache.org/licenses/LICENSE-2.0
10  *
11  *   Unless required by applicable law or agreed to in writing, software
12  *   distributed under the License is distributed on an "AS IS" BASIS,
13  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *   See the License for the specific language governing permissions and
15  *   limitations under the License.
16  *
17  */
18 import './formControls.scss';
19
20 import React, {Component} from 'react';
21
22 export default class TextInput extends Component {
23     render() {
24         let {label, onChange, value, defaultValue, ...props} = this.props;
25         let inputProperties = {
26             value: value,
27             onChange: onChange
28         }
29         let isRequired;
30         let inputType;
31         if(this.props.required) {
32            isRequired = <span className="required">*</span>
33         }
34         if (defaultValue) {
35             inputProperties.defaultValue = defaultValue;
36         }
37         if (props.pattern) {
38             inputProperties.pattern = props.pattern;
39         }
40         if (value == undefined) {
41             value = defaultValue;
42         }
43         switch(props.type) {
44             case 'textarea':
45                 inputType = <textarea {...inputProperties} value={value}/>
46
47                 break;
48             default:
49                 inputType = <input type={props.type} {...inputProperties} placeholder={props.placeholder}/>;
50         }
51         let html = (
52             <label className={"sqTextInput " + props.className} style={props.style}>
53               <span> { label } {isRequired}</span>
54               {
55                 !props.readonly ? inputType : <div className="readonly">{value}</div>
56               }
57
58             </label>
59         );
60         return html;
61     }
62 }
63
64 TextInput.defaultProps = {
65     onChange: function(e) {
66         console.log(e.target.value);
67     },
68     label: '',
69     defaultValue: undefined,
70     type: 'text',
71     readonly: false,
72     style:{}
73
74 }
75