@modernpoacher/cogs 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/README.md +11 -0
  2. package/babel.config.cjs +131 -0
  3. package/package.json +163 -0
  4. package/src/cogs/checkbox/description/index.cjs +17 -0
  5. package/src/cogs/checkbox/description/index.jsx +19 -0
  6. package/src/cogs/checkbox/error-message/index.cjs +17 -0
  7. package/src/cogs/checkbox/error-message/index.jsx +19 -0
  8. package/src/cogs/checkbox/field/index.cjs +17 -0
  9. package/src/cogs/checkbox/field/index.jsx +57 -0
  10. package/src/cogs/checkbox/index.cjs +17 -0
  11. package/src/cogs/checkbox/index.jsx +135 -0
  12. package/src/cogs/checkbox/title/index.cjs +17 -0
  13. package/src/cogs/checkbox/title/index.jsx +19 -0
  14. package/src/cogs/email/description/index.cjs +17 -0
  15. package/src/cogs/email/description/index.jsx +19 -0
  16. package/src/cogs/email/error-message/index.cjs +17 -0
  17. package/src/cogs/email/error-message/index.jsx +19 -0
  18. package/src/cogs/email/field/index.cjs +17 -0
  19. package/src/cogs/email/field/index.jsx +58 -0
  20. package/src/cogs/email/index.cjs +17 -0
  21. package/src/cogs/email/index.jsx +113 -0
  22. package/src/cogs/email/title/index.cjs +17 -0
  23. package/src/cogs/email/title/index.jsx +19 -0
  24. package/src/cogs/index.cjs +16 -0
  25. package/src/cogs/index.jsx +211 -0
  26. package/src/cogs/number/description/index.cjs +17 -0
  27. package/src/cogs/number/description/index.jsx +19 -0
  28. package/src/cogs/number/error-message/index.cjs +17 -0
  29. package/src/cogs/number/error-message/index.jsx +19 -0
  30. package/src/cogs/number/field/index.cjs +17 -0
  31. package/src/cogs/number/field/index.jsx +67 -0
  32. package/src/cogs/number/index.cjs +17 -0
  33. package/src/cogs/number/index.jsx +122 -0
  34. package/src/cogs/number/title/index.cjs +17 -0
  35. package/src/cogs/number/title/index.jsx +19 -0
  36. package/src/cogs/password/description/index.cjs +17 -0
  37. package/src/cogs/password/description/index.jsx +19 -0
  38. package/src/cogs/password/error-message/index.cjs +17 -0
  39. package/src/cogs/password/error-message/index.jsx +19 -0
  40. package/src/cogs/password/field/index.cjs +17 -0
  41. package/src/cogs/password/field/index.jsx +58 -0
  42. package/src/cogs/password/index.cjs +17 -0
  43. package/src/cogs/password/index.jsx +113 -0
  44. package/src/cogs/password/title/index.cjs +17 -0
  45. package/src/cogs/password/title/index.jsx +19 -0
  46. package/src/cogs/radio/description/index.cjs +17 -0
  47. package/src/cogs/radio/description/index.jsx +19 -0
  48. package/src/cogs/radio/error-message/index.cjs +17 -0
  49. package/src/cogs/radio/error-message/index.jsx +19 -0
  50. package/src/cogs/radio/field/index.cjs +17 -0
  51. package/src/cogs/radio/field/index.jsx +74 -0
  52. package/src/cogs/radio/index.cjs +17 -0
  53. package/src/cogs/radio/index.jsx +146 -0
  54. package/src/cogs/radio/title/index.cjs +17 -0
  55. package/src/cogs/radio/title/index.jsx +19 -0
  56. package/src/cogs/select/description/index.cjs +17 -0
  57. package/src/cogs/select/description/index.jsx +19 -0
  58. package/src/cogs/select/error-message/index.cjs +17 -0
  59. package/src/cogs/select/error-message/index.jsx +19 -0
  60. package/src/cogs/select/field/index.cjs +17 -0
  61. package/src/cogs/select/field/index.jsx +71 -0
  62. package/src/cogs/select/index.cjs +17 -0
  63. package/src/cogs/select/index.jsx +129 -0
  64. package/src/cogs/select/title/index.cjs +17 -0
  65. package/src/cogs/select/title/index.jsx +19 -0
  66. package/src/cogs/text/description/index.cjs +17 -0
  67. package/src/cogs/text/description/index.jsx +19 -0
  68. package/src/cogs/text/error-message/index.cjs +17 -0
  69. package/src/cogs/text/error-message/index.jsx +19 -0
  70. package/src/cogs/text/field/index.cjs +17 -0
  71. package/src/cogs/text/field/index.jsx +58 -0
  72. package/src/cogs/text/index.cjs +17 -0
  73. package/src/cogs/text/index.jsx +113 -0
  74. package/src/cogs/text/title/index.cjs +17 -0
  75. package/src/cogs/text/title/index.jsx +19 -0
  76. package/src/cogs/textarea/description/index.cjs +17 -0
  77. package/src/cogs/textarea/description/index.jsx +19 -0
  78. package/src/cogs/textarea/error-message/index.cjs +17 -0
  79. package/src/cogs/textarea/error-message/index.jsx +19 -0
  80. package/src/cogs/textarea/field/index.cjs +17 -0
  81. package/src/cogs/textarea/field/index.jsx +57 -0
  82. package/src/cogs/textarea/index.cjs +17 -0
  83. package/src/cogs/textarea/index.jsx +113 -0
  84. package/src/cogs/textarea/title/index.cjs +17 -0
  85. package/src/cogs/textarea/title/index.jsx +19 -0
  86. package/src/components/common/disabled/index.cjs +17 -0
  87. package/src/components/common/disabled/index.jsx +9 -0
  88. package/src/components/common/readonly/index.cjs +17 -0
  89. package/src/components/common/readonly/index.jsx +9 -0
  90. package/src/components/common/required/index.cjs +17 -0
  91. package/src/components/common/required/index.jsx +9 -0
  92. package/src/components/common/text-content/index.cjs +17 -0
  93. package/src/components/common/text-content/index.jsx +24 -0
  94. package/src/components/description/index.cjs +17 -0
  95. package/src/components/description/index.jsx +37 -0
  96. package/src/components/error-message/index.cjs +17 -0
  97. package/src/components/error-message/index.jsx +41 -0
  98. package/src/components/field/index.cjs +16 -0
  99. package/src/components/field/index.jsx +146 -0
  100. package/src/components/title/index.cjs +20 -0
  101. package/src/components/title/index.jsx +110 -0
  102. package/src/index.cjs +29 -0
  103. package/src/index.d.cts +386 -0
  104. package/src/index.mjs +34 -0
@@ -0,0 +1,19 @@
1
+ /**
2
+ * EmailDescription component
3
+ */
4
+ import classnames from 'classnames'
5
+ import Description from '@modernpoacher/cogs/components/description'
6
+
7
+ export default class EmailDescription extends Description {
8
+ getClassName () {
9
+ return classnames(super.getClassName(), 'email')
10
+ }
11
+ }
12
+
13
+ EmailDescription.propTypes = {
14
+ ...Description.propTypes
15
+ }
16
+
17
+ EmailDescription.defaultProps = {
18
+ ...Description.defaultProps
19
+ }
@@ -0,0 +1,17 @@
1
+ require('@babel/register')({
2
+ ignore: [
3
+ /node_modules\/(?!@modernpoacher\/cogs|@modernpoacher\/sprockets)/
4
+ ]
5
+ })
6
+
7
+ const debug = require('debug')
8
+
9
+ const log = debug('@modernpoacher/cogs/cogs/email/error-message')
10
+
11
+ log('`cogs` is awake')
12
+
13
+ const {
14
+ default: component
15
+ } = require('./index.jsx')
16
+
17
+ module.exports = component
@@ -0,0 +1,19 @@
1
+ /**
2
+ * EmailErrorMessage component
3
+ */
4
+ import classnames from 'classnames'
5
+ import ErrorMessage from '@modernpoacher/cogs/components/error-message'
6
+
7
+ export default class EmailErrorMessage extends ErrorMessage {
8
+ getClassName () {
9
+ return classnames(super.getClassName(), 'email')
10
+ }
11
+ }
12
+
13
+ EmailErrorMessage.propTypes = {
14
+ ...ErrorMessage.propTypes
15
+ }
16
+
17
+ EmailErrorMessage.defaultProps = {
18
+ ...ErrorMessage.defaultProps
19
+ }
@@ -0,0 +1,17 @@
1
+ require('@babel/register')({
2
+ ignore: [
3
+ /node_modules\/(?!@modernpoacher\/cogs|@modernpoacher\/sprockets)/
4
+ ]
5
+ })
6
+
7
+ const debug = require('debug')
8
+
9
+ const log = debug('@modernpoacher/cogs/cogs/email/field')
10
+
11
+ log('`cogs` is awake')
12
+
13
+ const {
14
+ default: component
15
+ } = require('./index.jsx')
16
+
17
+ module.exports = component
@@ -0,0 +1,58 @@
1
+ /**
2
+ * EmailField component
3
+ */
4
+ import React from 'react'
5
+ import classnames from 'classnames'
6
+
7
+ import { ValueField } from '@modernpoacher/cogs/components/field'
8
+
9
+ export default class EmailField extends ValueField {
10
+ getClassName () {
11
+ return classnames(super.getClassName(), 'email')
12
+ }
13
+
14
+ render () {
15
+ const {
16
+ id,
17
+ name,
18
+ value,
19
+ defaultValue,
20
+ required,
21
+ disabled,
22
+ readOnly,
23
+ tabIndex,
24
+ accessKey,
25
+ placeholder,
26
+ fieldRef
27
+ } = this.props
28
+
29
+ const className = this.getClassName()
30
+
31
+ return (
32
+ <input
33
+ id={id}
34
+ name={name}
35
+ value={value}
36
+ defaultValue={defaultValue}
37
+ required={required}
38
+ disabled={disabled}
39
+ readOnly={readOnly}
40
+ tabIndex={tabIndex}
41
+ accessKey={accessKey}
42
+ placeholder={placeholder}
43
+ onChange={this.handleChange}
44
+ className={className}
45
+ type='email'
46
+ ref={fieldRef}
47
+ />
48
+ )
49
+ }
50
+ }
51
+
52
+ EmailField.propTypes = {
53
+ ...ValueField.propTypes
54
+ }
55
+
56
+ EmailField.defaultProps = {
57
+ ...ValueField.defaultProps
58
+ }
@@ -0,0 +1,17 @@
1
+ require('@babel/register')({
2
+ ignore: [
3
+ /node_modules\/(?!@modernpoacher\/cogs|@modernpoacher\/sprockets)/
4
+ ]
5
+ })
6
+
7
+ const debug = require('debug')
8
+
9
+ const log = debug('@modernpoacher/cogs/cogs/email')
10
+
11
+ log('`cogs` is awake')
12
+
13
+ const {
14
+ default: component
15
+ } = require('./index.jsx')
16
+
17
+ module.exports = component
@@ -0,0 +1,113 @@
1
+ /**
2
+ * EmailCog component
3
+ */
4
+ import React from 'react'
5
+ import classnames from 'classnames'
6
+
7
+ import { ValueCog } from '@modernpoacher/cogs/cogs'
8
+
9
+ import Title from './title/index.jsx'
10
+ import Description from './description/index.jsx'
11
+ import ErrorMessage from './error-message/index.jsx'
12
+ import Field from './field/index.jsx'
13
+
14
+ export default class EmailCog extends ValueCog {
15
+ getClassName () {
16
+ return classnames(super.getClassName(), 'email')
17
+ }
18
+
19
+ handleChange = (value) => {
20
+ const {
21
+ onChange
22
+ } = this.props
23
+
24
+ onChange(value)
25
+ }
26
+
27
+ renderTitle () {
28
+ const id = this.getId()
29
+
30
+ const {
31
+ title,
32
+ required,
33
+ disabled,
34
+ readOnly
35
+ } = this.props
36
+
37
+ return (
38
+ <Title
39
+ id={id}
40
+ title={title}
41
+ required={required}
42
+ disabled={disabled}
43
+ readOnly={readOnly}
44
+ />
45
+ )
46
+ }
47
+
48
+ renderDescription () {
49
+ const {
50
+ description
51
+ } = this.props
52
+
53
+ return (
54
+ <Description
55
+ description={description}
56
+ />
57
+ )
58
+ }
59
+
60
+ renderErrorMessage () {
61
+ const {
62
+ errorMessage
63
+ } = this.props
64
+
65
+ return (
66
+ <ErrorMessage
67
+ errorMessage={errorMessage}
68
+ />
69
+ )
70
+ }
71
+
72
+ renderField () {
73
+ const id = this.getId()
74
+
75
+ const {
76
+ name,
77
+ value,
78
+ defaultValue,
79
+ required,
80
+ disabled,
81
+ readOnly,
82
+ tabIndex,
83
+ accessKey,
84
+ placeholder,
85
+ fieldRef
86
+ } = this.props
87
+
88
+ return (
89
+ <Field
90
+ id={id}
91
+ name={name}
92
+ value={value}
93
+ defaultValue={defaultValue}
94
+ required={required}
95
+ disabled={disabled}
96
+ readOnly={readOnly}
97
+ tabIndex={tabIndex}
98
+ accessKey={accessKey}
99
+ placeholder={placeholder}
100
+ onChange={this.handleChange}
101
+ fieldRef={fieldRef}
102
+ />
103
+ )
104
+ }
105
+ }
106
+
107
+ EmailCog.propTypes = {
108
+ ...ValueCog.propTypes
109
+ }
110
+
111
+ EmailCog.defaultProps = {
112
+ ...ValueCog.defaultProps
113
+ }
@@ -0,0 +1,17 @@
1
+ require('@babel/register')({
2
+ ignore: [
3
+ /node_modules\/(?!@modernpoacher\/cogs|@modernpoacher\/sprockets)/
4
+ ]
5
+ })
6
+
7
+ const debug = require('debug')
8
+
9
+ const log = debug('@modernpoacher/cogs/cogs/email/title')
10
+
11
+ log('`cogs` is awake')
12
+
13
+ const {
14
+ default: component
15
+ } = require('./index.jsx')
16
+
17
+ module.exports = component
@@ -0,0 +1,19 @@
1
+ /**
2
+ * EmailTitle component
3
+ */
4
+ import classnames from 'classnames'
5
+ import Title from '@modernpoacher/cogs/components/title'
6
+
7
+ export default class EmailTitle extends Title {
8
+ getClassName () {
9
+ return classnames(super.getClassName(), 'email')
10
+ }
11
+ }
12
+
13
+ EmailTitle.propTypes = {
14
+ ...Title.propTypes
15
+ }
16
+
17
+ EmailTitle.defaultProps = {
18
+ ...Title.defaultProps
19
+ }
@@ -0,0 +1,16 @@
1
+ require('@babel/register')({
2
+ ignore: [
3
+ /node_modules\/(?!@modernpoacher\/cogs|@modernpoacher\/sprockets)/
4
+ ]
5
+ })
6
+
7
+ const debug = require('debug')
8
+
9
+ const log = debug('@modernpoacher/cogs/cogs')
10
+
11
+ log('`cogs` is awake')
12
+
13
+ /**
14
+ * Has default export, etc
15
+ */
16
+ module.exports = require('./index.jsx')
@@ -0,0 +1,211 @@
1
+ /**
2
+ * Cog component
3
+ */
4
+ import React, { Component } from 'react'
5
+ import PropTypes from 'prop-types'
6
+ import classnames from 'classnames'
7
+
8
+ import Title from '@modernpoacher/cogs/components/title'
9
+ import Description from '@modernpoacher/cogs/components/description'
10
+ import ErrorMessage from '@modernpoacher/cogs/components/error-message'
11
+ import Field from '@modernpoacher/cogs/components/field'
12
+
13
+ function onChange () {
14
+ /* */
15
+ }
16
+
17
+ function onClick () {
18
+ /* */
19
+ }
20
+
21
+ export default class Cog extends Component {
22
+ getClassName () {
23
+ const {
24
+ required,
25
+ disabled,
26
+ readOnly,
27
+ errorMessage
28
+ } = this.props
29
+
30
+ return classnames('cog', { required, disabled, readOnly, error: !!errorMessage })
31
+ }
32
+
33
+ getId () {
34
+ const {
35
+ id,
36
+ name
37
+ } = this.props
38
+
39
+ return id || name
40
+ }
41
+
42
+ shouldComponentUpdate (props) {
43
+ return (
44
+ (props.name !== this.props.name) ||
45
+ (props.id !== this.props.id) ||
46
+ (props.title !== this.props.title) ||
47
+ (props.description !== this.props.description) ||
48
+ (props.errorMessage !== this.props.errorMessage) ||
49
+ (props.required !== this.props.required) ||
50
+ (props.disabled !== this.props.disabled) ||
51
+ (props.readOnly !== this.props.readOnly) ||
52
+ (props.tabIndex !== this.props.tabIndex) ||
53
+ (props.accessKey !== this.props.accessKey) ||
54
+ (props.placeholder !== this.props.placeholder) ||
55
+ (props.onChange !== this.props.onChange)
56
+ )
57
+ }
58
+
59
+ renderTitle () {
60
+ const id = this.getId()
61
+
62
+ const {
63
+ title,
64
+ required,
65
+ disabled,
66
+ readOnly
67
+ } = this.props
68
+
69
+ return (
70
+ <Title
71
+ id={id}
72
+ title={title}
73
+ required={required}
74
+ disabled={disabled}
75
+ readOnly={readOnly}
76
+ />
77
+ )
78
+ }
79
+
80
+ renderDescription () {
81
+ const {
82
+ description
83
+ } = this.props
84
+
85
+ return (
86
+ <Description
87
+ description={description}
88
+ />
89
+ )
90
+ }
91
+
92
+ renderErrorMessage () {
93
+ const {
94
+ errorMessage
95
+ } = this.props
96
+
97
+ return (
98
+ <ErrorMessage
99
+ errorMessage={errorMessage}
100
+ />
101
+ )
102
+ }
103
+
104
+ renderField () {
105
+ const id = this.getId()
106
+
107
+ const {
108
+ name,
109
+ required,
110
+ disabled,
111
+ readOnly,
112
+ tabIndex,
113
+ accessKey,
114
+ placeholder,
115
+ onChange,
116
+ fieldRef
117
+ } = this.props
118
+
119
+ return (
120
+ <Field
121
+ id={id}
122
+ name={name}
123
+ required={required}
124
+ disabled={disabled}
125
+ readOnly={readOnly}
126
+ tabIndex={tabIndex}
127
+ accessKey={accessKey}
128
+ placeholder={placeholder}
129
+ onChange={onChange}
130
+ fieldRef={fieldRef}
131
+ />
132
+ )
133
+ }
134
+
135
+ render () {
136
+ const className = this.getClassName()
137
+
138
+ return (
139
+ <div className={className}>
140
+ {this.renderTitle()}
141
+ {this.renderDescription()}
142
+ {this.renderErrorMessage()}
143
+ {this.renderField()}
144
+ </div>
145
+ )
146
+ }
147
+ }
148
+
149
+ Cog.propTypes = {
150
+ id: PropTypes.string,
151
+ name: PropTypes.string.isRequired,
152
+ title: PropTypes.string,
153
+ description: PropTypes.string,
154
+ errorMessage: PropTypes.string,
155
+ required: PropTypes.bool,
156
+ disabled: PropTypes.bool,
157
+ readOnly: PropTypes.bool,
158
+ placeholder: PropTypes.string,
159
+ onChange: PropTypes.func,
160
+ fieldRef: PropTypes.shape({
161
+ current: PropTypes.shape().isRequired
162
+ })
163
+ }
164
+
165
+ Cog.defaultProps = {
166
+ required: false,
167
+ disabled: false,
168
+ readOnly: false,
169
+ onChange
170
+ }
171
+
172
+ export class ValueCog extends Cog {
173
+ shouldComponentUpdate (props) {
174
+ return (
175
+ super.shouldComponentUpdate(props) ||
176
+ (props.value !== this.props.value)
177
+ )
178
+ }
179
+ }
180
+
181
+ ValueCog.propTypes = {
182
+ ...Cog.propTypes,
183
+ value: PropTypes.string,
184
+ defaultValue: PropTypes.string
185
+ }
186
+
187
+ ValueCog.defaultProps = {
188
+ ...Cog.defaultProps
189
+ }
190
+
191
+ export class CheckCog extends Cog {
192
+ shouldComponentUpdate (props) {
193
+ return (
194
+ super.shouldComponentUpdate(props) ||
195
+ (props.checked !== this.props.checked) ||
196
+ (props.onClick !== this.props.onClick)
197
+ )
198
+ }
199
+ }
200
+
201
+ CheckCog.propTypes = {
202
+ ...Cog.propTypes,
203
+ checked: PropTypes.bool,
204
+ defaultChecked: PropTypes.bool,
205
+ onClick: PropTypes.func
206
+ }
207
+
208
+ CheckCog.defaultProps = {
209
+ ...Cog.defaultProps,
210
+ onClick
211
+ }
@@ -0,0 +1,17 @@
1
+ require('@babel/register')({
2
+ ignore: [
3
+ /node_modules\/(?!@modernpoacher\/cogs|@modernpoacher\/sprockets)/
4
+ ]
5
+ })
6
+
7
+ const debug = require('debug')
8
+
9
+ const log = debug('@modernpoacher/cogs/cogs/number/description')
10
+
11
+ log('`cogs` is awake')
12
+
13
+ const {
14
+ default: component
15
+ } = require('./index.jsx')
16
+
17
+ module.exports = component
@@ -0,0 +1,19 @@
1
+ /**
2
+ * NumberDescription component
3
+ */
4
+ import classnames from 'classnames'
5
+ import Description from '@modernpoacher/cogs/components/description'
6
+
7
+ export default class NumberDescription extends Description {
8
+ getClassName () {
9
+ return classnames(super.getClassName(), 'number')
10
+ }
11
+ }
12
+
13
+ NumberDescription.propTypes = {
14
+ ...Description.propTypes
15
+ }
16
+
17
+ NumberDescription.defaultProps = {
18
+ ...Description.defaultProps
19
+ }
@@ -0,0 +1,17 @@
1
+ require('@babel/register')({
2
+ ignore: [
3
+ /node_modules\/(?!@modernpoacher\/cogs|@modernpoacher\/sprockets)/
4
+ ]
5
+ })
6
+
7
+ const debug = require('debug')
8
+
9
+ const log = debug('@modernpoacher/cogs/cogs/number/error-message')
10
+
11
+ log('`cogs` is awake')
12
+
13
+ const {
14
+ default: component
15
+ } = require('./index.jsx')
16
+
17
+ module.exports = component
@@ -0,0 +1,19 @@
1
+ /**
2
+ * NumberErrorMessage component
3
+ */
4
+ import classnames from 'classnames'
5
+ import ErrorMessage from '@modernpoacher/cogs/components/error-message'
6
+
7
+ export default class NumberErrorMessage extends ErrorMessage {
8
+ getClassName () {
9
+ return classnames(super.getClassName(), 'number')
10
+ }
11
+ }
12
+
13
+ NumberErrorMessage.propTypes = {
14
+ ...ErrorMessage.propTypes
15
+ }
16
+
17
+ NumberErrorMessage.defaultProps = {
18
+ ...ErrorMessage.defaultProps
19
+ }
@@ -0,0 +1,17 @@
1
+ require('@babel/register')({
2
+ ignore: [
3
+ /node_modules\/(?!@modernpoacher\/cogs|@modernpoacher\/sprockets)/
4
+ ]
5
+ })
6
+
7
+ const debug = require('debug')
8
+
9
+ const log = debug('@modernpoacher/cogs/cogs/number/field')
10
+
11
+ log('`cogs` is awake')
12
+
13
+ const {
14
+ default: component
15
+ } = require('./index.jsx')
16
+
17
+ module.exports = component
@@ -0,0 +1,67 @@
1
+ /**
2
+ * NumberField component
3
+ */
4
+ import React from 'react'
5
+ import PropTypes from 'prop-types'
6
+ import classnames from 'classnames'
7
+
8
+ import { ValueField } from '@modernpoacher/cogs/components/field'
9
+
10
+ export default class NumberField extends ValueField {
11
+ getClassName () {
12
+ return classnames(super.getClassName(), 'number')
13
+ }
14
+
15
+ render () {
16
+ const {
17
+ id,
18
+ name,
19
+ value,
20
+ defaultValue,
21
+ required,
22
+ disabled,
23
+ readOnly,
24
+ tabIndex,
25
+ accessKey,
26
+ placeholder,
27
+ fieldRef
28
+ } = this.props
29
+
30
+ const className = this.getClassName()
31
+
32
+ return (
33
+ <input
34
+ id={id}
35
+ name={name}
36
+ value={value}
37
+ defaultValue={defaultValue}
38
+ required={required}
39
+ disabled={disabled}
40
+ readOnly={readOnly}
41
+ tabIndex={tabIndex}
42
+ accessKey={accessKey}
43
+ placeholder={placeholder}
44
+ onChange={this.handleChange}
45
+ className={className}
46
+ type='number'
47
+ ref={fieldRef}
48
+ />
49
+ )
50
+ }
51
+ }
52
+
53
+ NumberField.propTypes = {
54
+ ...ValueField.propTypes,
55
+ value: PropTypes.oneOfType([
56
+ PropTypes.string,
57
+ PropTypes.number
58
+ ]),
59
+ defaultValue: PropTypes.oneOfType([
60
+ PropTypes.string,
61
+ PropTypes.number
62
+ ])
63
+ }
64
+
65
+ NumberField.defaultProps = {
66
+ ...ValueField.defaultProps
67
+ }