Skip to content

Commit d085e89

Browse files
committed
add basic input component
1 parent b2e3b78 commit d085e89

File tree

8 files changed

+271
-8
lines changed

8 files changed

+271
-8
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
export const defaultCode = `
2+
class Demo extends React.Component {
3+
render() {
4+
return (
5+
<div>
6+
{/* Preview Block 1 */}
7+
<PreviewBlock header="Default TextInput">
8+
<TextInput />
9+
</PreviewBlock>
10+
{/* Preview Block 2 */}
11+
<PreviewBlock header="Disabled TextInput">
12+
<TextInput disabled={true}/>
13+
</PreviewBlock>
14+
{/* Preview Block 3 */}
15+
<PreviewBlock header="Controlled width TextInput">
16+
<TextInput width='200px' placeholder="type here..."/>
17+
</PreviewBlock>
18+
<PreviewBlock header="Password TextInput">
19+
<TextInput type="password" placeholder="Enter password..."/>
20+
</PreviewBlock>
21+
</div>
22+
)
23+
}
24+
}
25+
`;

docs/client/components/common/DefaultCode/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ export { defaultCode as ButtonDefaultCode } from './Button';
33
export { defaultCode as CheckboxDefaultCode } from './Checkbox';
44
export { defaultCode as CheckboxGroupDefaultCode } from './CheckboxGroup';
55
export { defaultCode as ToggleDefaultCode } from './Toggle';
6-
export { defaultCode as RadioButtonGroupDefaultCode } from './RadioButtonGroup';
6+
export { defaultCode as RadioButtonGroupDefaultCode } from './RadioButtonGroup';
7+
export { defaultCode as TextInputDefaultCode } from './TextInput';

docs/client/components/common/componentList.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,17 @@ import CheckboxGroupReadme from '../../../../src/checkbox/readMe.md';
99
import Toggle from '../../../../src/toggle';
1010
import ToggleReadme from '../../../../src/toggle/readMe.md';
1111
import RadioButtonGroup from '../../../../src/radioButtonGroup';
12+
import TextInput from '../../../../src/textInput';
13+
import TextInputReadme from '../../../../src/textInput/readMe.md';
1214

1315
import {
1416
CardDefaultCode,
1517
ButtonDefaultCode,
1618
CheckboxDefaultCode,
1719
CheckboxGroupDefaultCode,
1820
ToggleDefaultCode,
19-
RadioButtonGroupDefaultCode
21+
RadioButtonGroupDefaultCode,
22+
TextInputDefaultCode,
2023
} from './DefaultCode';
2124

2225
export const componentList = [
@@ -56,4 +59,10 @@ export const componentList = [
5659
component: RadioButtonGroup,
5760
defaultCode: RadioButtonGroupDefaultCode,
5861
},
62+
{
63+
name: 'TextInput',
64+
docs: TextInputReadme,
65+
component: TextInput,
66+
defaultCode: TextInputDefaultCode,
67+
}
5968
];

package-lock.json

Lines changed: 142 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/index.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1+
import React from 'react';
2+
import ReactDOM from 'react-dom';
13
import Button from './button';
24
import Card from './card';
35
import Checkbox from './checkbox';
46
import CheckboxGroup from './checkboxGroup';
57
import Toggle from './toggle';
68
import RadioButtonGroup from './radioButtonGroup';
9+
import TextInput from './textInput';
710

811
export default {
912
Button,
@@ -12,6 +15,7 @@ export default {
1215
CheckboxGroup,
1316
RadioButtonGroup,
1417
Toggle,
18+
TextInput
1519
};
1620

1721
// import React from 'react';
@@ -31,4 +35,4 @@ export default {
3135
// </div>
3236
// );
3337

34-
// ReactDOM.render(<RadioDisplay />, document.getElementById('index'));
38+
// ReactDOM.render(<RadioDisplay />, document.getElementById('index'));

src/textInput/index.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import React from 'react';
2+
import classnames from 'classnames';
3+
import { themr } from 'react-css-themr';
4+
import PropTypes from 'prop-types';
5+
import defaultTheme from './theme.scss';
6+
7+
const TextInput = ({
8+
additionalClasses,
9+
theme,
10+
width,
11+
...others,
12+
}) => {
13+
const wrapperClasses = classnames(theme.inputWrapper, additionalClasses);
14+
const inputElementProps = {
15+
...others,
16+
style: {
17+
width: width ? width : '100%',
18+
},
19+
className: classnames(theme.inputElement),
20+
};
21+
return (
22+
<div className={wrapperClasses}>
23+
{React.createElement('input', inputElementProps)}
24+
</div>
25+
)
26+
}
27+
28+
TextInput.propTypes = {
29+
width: PropTypes.string,
30+
additionalClass: PropTypes.string,
31+
theme: PropTypes.object, // eslint-disable-line
32+
};
33+
34+
TextInput.defaultProps = {
35+
additionalClass: '',
36+
theme: defaultTheme,
37+
};
38+
39+
export default themr('CBInput', defaultTheme)(TextInput);

0 commit comments

Comments
 (0)