@modernpoacher/gremlins 0.0.311 → 1.0.1

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 (173) hide show
  1. package/.prettierignore +4 -0
  2. package/babel.config.cjs +4 -1
  3. package/eslint.config.mjs +33 -71
  4. package/index.d.mts +169 -2
  5. package/jest.after-each.mjs +10 -0
  6. package/jest.before-each.mjs +10 -0
  7. package/jest.config.mjs +11 -1
  8. package/package.json +84 -29
  9. package/src/{components → js/components}/common/disabled/index.cjs +5 -2
  10. package/src/js/components/common/disabled/index.d.cts +1 -0
  11. package/src/js/components/common/disabled/index.jsx +11 -0
  12. package/src/{components → js/components}/common/readonly/index.cjs +5 -2
  13. package/src/js/components/common/readonly/index.d.cts +1 -0
  14. package/src/js/components/common/readonly/index.jsx +11 -0
  15. package/src/{components → js/components}/common/required/index.cjs +5 -2
  16. package/src/js/components/common/required/index.d.cts +1 -0
  17. package/src/js/components/common/required/index.jsx +11 -0
  18. package/src/{components → js/components}/common/text-content/index.cjs +5 -2
  19. package/src/js/components/common/text-content/index.d.cts +2 -0
  20. package/src/{components → js/components}/common/text-content/index.d.mts +1 -3
  21. package/src/{components → js/components}/common/text-content/index.jsx +6 -5
  22. package/src/{components → js/components}/field/index.cjs +10 -2
  23. package/src/js/components/field/index.d.cts +1 -0
  24. package/src/js/components/field/index.d.mts +24 -0
  25. package/src/js/components/field/index.jsx +98 -0
  26. package/src/{components → js/components}/group/index.cjs +5 -2
  27. package/src/js/components/group/index.d.cts +2 -0
  28. package/src/js/components/group/index.d.mts +9 -0
  29. package/src/js/components/group/index.jsx +5 -0
  30. package/src/js/components/index.cjs +29 -0
  31. package/src/js/components/index.d.cts +2 -0
  32. package/src/js/components/index.d.mts +2 -0
  33. package/src/js/components/index.mjs +8 -0
  34. package/src/{gremlins → js/gremlins}/checkbox/field/index.cjs +5 -2
  35. package/src/js/gremlins/checkbox/field/index.d.cts +2 -0
  36. package/src/js/gremlins/checkbox/field/index.d.mts +14 -0
  37. package/src/{gremlins → js/gremlins}/checkbox/field/index.jsx +21 -10
  38. package/src/{gremlins → js/gremlins}/checkbox/index.cjs +5 -2
  39. package/src/js/gremlins/checkbox/index.d.cts +2 -0
  40. package/src/js/gremlins/checkbox/index.d.mts +24 -0
  41. package/src/{gremlins → js/gremlins}/checkbox/index.jsx +31 -23
  42. package/src/{gremlins → js/gremlins}/email/field/index.cjs +5 -2
  43. package/src/js/gremlins/email/field/index.d.cts +2 -0
  44. package/src/js/gremlins/email/field/index.d.mts +14 -0
  45. package/src/js/gremlins/email/field/index.jsx +83 -0
  46. package/src/{gremlins → js/gremlins}/email/index.cjs +5 -2
  47. package/src/js/gremlins/email/index.d.cts +2 -0
  48. package/src/js/gremlins/email/index.d.mts +18 -0
  49. package/src/{gremlins → js/gremlins}/email/index.jsx +25 -12
  50. package/src/{gremlins → js/gremlins}/fieldset/group/index.cjs +5 -2
  51. package/src/js/gremlins/fieldset/group/index.d.cts +2 -0
  52. package/src/js/gremlins/fieldset/group/index.d.mts +12 -0
  53. package/src/js/gremlins/fieldset/group/index.jsx +19 -0
  54. package/src/{gremlins → js/gremlins}/fieldset/index.cjs +5 -2
  55. package/src/js/gremlins/fieldset/index.d.cts +2 -0
  56. package/src/js/gremlins/fieldset/index.d.mts +14 -0
  57. package/src/js/gremlins/fieldset/index.jsx +37 -0
  58. package/src/{gremlins → js/gremlins}/index.cjs +9 -4
  59. package/src/js/gremlins/index.d.cts +5 -0
  60. package/src/js/gremlins/index.d.mts +27 -0
  61. package/src/js/gremlins/index.jsx +162 -0
  62. package/src/{gremlins → js/gremlins}/number/field/index.cjs +5 -2
  63. package/src/js/gremlins/number/field/index.d.cts +2 -0
  64. package/src/js/gremlins/number/field/index.d.mts +14 -0
  65. package/src/{gremlins → js/gremlins}/number/field/index.jsx +40 -7
  66. package/src/{gremlins → js/gremlins}/number/index.cjs +5 -2
  67. package/src/js/gremlins/number/index.d.cts +2 -0
  68. package/src/js/gremlins/number/index.d.mts +18 -0
  69. package/src/{gremlins → js/gremlins}/number/index.jsx +25 -8
  70. package/src/{gremlins → js/gremlins}/password/field/index.cjs +5 -2
  71. package/src/js/gremlins/password/field/index.d.cts +2 -0
  72. package/src/js/gremlins/password/field/index.d.mts +14 -0
  73. package/src/js/gremlins/password/field/index.jsx +83 -0
  74. package/src/{gremlins → js/gremlins}/password/index.cjs +5 -2
  75. package/src/js/gremlins/password/index.d.cts +2 -0
  76. package/src/js/gremlins/password/index.d.mts +18 -0
  77. package/src/{gremlins → js/gremlins}/password/index.jsx +25 -12
  78. package/src/{gremlins → js/gremlins}/radio/field/index.cjs +5 -2
  79. package/src/js/gremlins/radio/field/index.d.cts +2 -0
  80. package/src/js/gremlins/radio/field/index.d.mts +14 -0
  81. package/src/{gremlins → js/gremlins}/radio/field/index.jsx +20 -9
  82. package/src/{gremlins → js/gremlins}/radio/index.cjs +5 -2
  83. package/src/js/gremlins/radio/index.d.cts +2 -0
  84. package/src/js/gremlins/radio/index.d.mts +24 -0
  85. package/src/{gremlins → js/gremlins}/radio/index.jsx +33 -17
  86. package/src/{gremlins → js/gremlins}/select/field/index.cjs +5 -2
  87. package/src/js/gremlins/select/field/index.d.cts +2 -0
  88. package/src/js/gremlins/select/field/index.d.mts +18 -0
  89. package/src/js/gremlins/select/field/index.jsx +200 -0
  90. package/src/{gremlins → js/gremlins}/select/index.cjs +5 -2
  91. package/src/js/gremlins/select/index.d.cts +2 -0
  92. package/src/js/gremlins/select/index.d.mts +18 -0
  93. package/src/{gremlins → js/gremlins}/select/index.jsx +53 -16
  94. package/src/{gremlins → js/gremlins}/text/field/index.cjs +5 -2
  95. package/src/js/gremlins/text/field/index.d.cts +2 -0
  96. package/src/js/gremlins/text/field/index.d.mts +14 -0
  97. package/src/js/gremlins/text/field/index.jsx +83 -0
  98. package/src/{gremlins → js/gremlins}/text/index.cjs +5 -2
  99. package/src/js/gremlins/text/index.d.cts +2 -0
  100. package/src/js/gremlins/text/index.d.mts +18 -0
  101. package/src/{gremlins → js/gremlins}/text/index.jsx +25 -12
  102. package/src/{gremlins → js/gremlins}/textarea/field/index.cjs +5 -2
  103. package/src/js/gremlins/textarea/field/index.d.cts +2 -0
  104. package/src/js/gremlins/textarea/field/index.d.mts +18 -0
  105. package/src/js/gremlins/textarea/field/index.jsx +81 -0
  106. package/src/{gremlins → js/gremlins}/textarea/index.cjs +5 -2
  107. package/src/js/gremlins/textarea/index.d.cts +2 -0
  108. package/src/js/gremlins/textarea/index.d.mts +18 -0
  109. package/src/{gremlins → js/gremlins}/textarea/index.jsx +25 -12
  110. package/src/js/super/components/field/index.cjs +20 -0
  111. package/src/js/super/components/field/index.d.cts +2 -0
  112. package/src/js/super/components/field/index.d.mts +23 -0
  113. package/src/{components → js/super/components}/field/index.jsx +44 -87
  114. package/src/js/super/components/group/index.cjs +20 -0
  115. package/src/js/super/components/group/index.d.cts +2 -0
  116. package/src/js/super/components/group/index.d.mts +18 -0
  117. package/src/js/super/components/group/index.jsx +59 -0
  118. package/src/js/super/components/index.cjs +23 -0
  119. package/src/js/super/components/index.d.cts +2 -0
  120. package/src/js/super/components/index.d.mts +2 -0
  121. package/src/js/super/components/index.mjs +8 -0
  122. package/src/js/super/gremlins/index.cjs +22 -0
  123. package/src/js/super/gremlins/index.d.cts +4 -0
  124. package/src/js/super/gremlins/index.d.mts +36 -0
  125. package/src/js/super/gremlins/index.jsx +176 -0
  126. package/src/sass/.stylelintrc +14 -0
  127. package/src/sass/_gremlins.scss +59 -0
  128. package/src/sass/gremlins/_checkbox.scss +87 -0
  129. package/src/sass/gremlins/_disabled.scss +15 -0
  130. package/src/sass/gremlins/_error.scss +48 -0
  131. package/src/sass/gremlins/_radio.scss +93 -0
  132. package/.publish/README.md +0 -20
  133. package/src/common/index.d.mts +0 -9
  134. package/src/common/index.mjs +0 -7
  135. package/src/components/common/disabled/index.jsx +0 -9
  136. package/src/components/common/readonly/index.jsx +0 -9
  137. package/src/components/common/required/index.jsx +0 -9
  138. package/src/components/field/index.d.mts +0 -23
  139. package/src/components/group/index.d.mts +0 -16
  140. package/src/components/group/index.jsx +0 -59
  141. package/src/gremlins/checkbox/field/index.d.mts +0 -9
  142. package/src/gremlins/checkbox/index.d.mts +0 -9
  143. package/src/gremlins/email/field/index.d.mts +0 -9
  144. package/src/gremlins/email/field/index.jsx +0 -54
  145. package/src/gremlins/email/index.d.mts +0 -9
  146. package/src/gremlins/fieldset/group/index.d.mts +0 -9
  147. package/src/gremlins/fieldset/group/index.jsx +0 -16
  148. package/src/gremlins/fieldset/index.d.mts +0 -9
  149. package/src/gremlins/fieldset/index.jsx +0 -41
  150. package/src/gremlins/index.d.mts +0 -45
  151. package/src/gremlins/index.jsx +0 -291
  152. package/src/gremlins/number/field/index.d.mts +0 -9
  153. package/src/gremlins/number/index.d.mts +0 -9
  154. package/src/gremlins/password/field/index.d.mts +0 -9
  155. package/src/gremlins/password/field/index.jsx +0 -54
  156. package/src/gremlins/password/index.d.mts +0 -9
  157. package/src/gremlins/radio/field/index.d.mts +0 -9
  158. package/src/gremlins/radio/index.d.mts +0 -9
  159. package/src/gremlins/select/field/index.d.mts +0 -9
  160. package/src/gremlins/select/field/index.jsx +0 -111
  161. package/src/gremlins/select/index.d.mts +0 -9
  162. package/src/gremlins/text/field/index.d.mts +0 -9
  163. package/src/gremlins/text/field/index.jsx +0 -54
  164. package/src/gremlins/text/index.d.mts +0 -9
  165. package/src/gremlins/textarea/field/index.d.mts +0 -9
  166. package/src/gremlins/textarea/field/index.jsx +0 -53
  167. package/src/gremlins/textarea/index.d.mts +0 -9
  168. /package/src/{components → js/components}/common/disabled/index.d.mts +0 -0
  169. /package/src/{components → js/components}/common/readonly/index.d.mts +0 -0
  170. /package/src/{components → js/components}/common/required/index.d.mts +0 -0
  171. /package/src/{index.cjs → js/index.cjs} +0 -0
  172. /package/src/{index.d.mts → js/index.d.mts} +0 -0
  173. /package/src/{index.mjs → js/index.mjs} +0 -0
@@ -1,291 +0,0 @@
1
- /**
2
- * GroupGremlin component
3
- *
4
- * @typedef {import('@modernpoacher/gremlins/gremlins').GroupGremlinProps} GroupGremlinProps
5
- */
6
- /**
7
- * FieldGremlin component
8
- *
9
- * @typedef {import('@modernpoacher/gremlins/gremlins').FieldGremlinProps} FieldGremlinProps
10
- */
11
-
12
- import React, { Component } from 'react'
13
- import PropTypes from 'prop-types'
14
- import classnames from 'classnames'
15
-
16
- import {
17
- DEFAULT_HANDLE_CHANGE,
18
- DEFAULT_HANDLE_CLICK
19
- } from '#gremlins/common'
20
-
21
- import Field, {
22
- ValueField,
23
- CheckField
24
- } from '#gremlins/components/field'
25
-
26
- import Group from '#gremlins/components/group'
27
-
28
- export class FieldGremlin extends Component {
29
- getClassName () {
30
- const {
31
- required = false,
32
- disabled = false,
33
- readOnly = false
34
- } = this.props
35
-
36
- return classnames('gremlin', { required, disabled, readOnly })
37
- }
38
-
39
- getId () {
40
- const {
41
- id,
42
- name
43
- } = this.props
44
-
45
- return id || name
46
- }
47
-
48
- /**
49
- * @param {FieldGremlinProps} props
50
- * @returns {boolean}
51
- */
52
- shouldComponentUpdate (props, state) {
53
- return (
54
- (props.name !== this.props.name) ||
55
- (props.id !== this.props.id) ||
56
- (props.required !== this.props.required) ||
57
- (props.disabled !== this.props.disabled) ||
58
- (props.readOnly !== this.props.readOnly) ||
59
- (props.tabIndex !== this.props.tabIndex) ||
60
- (props.accessKey !== this.props.accessKey) ||
61
- (props.placeholder !== this.props.placeholder) ||
62
- (props.onChange !== this.props.onChange)
63
- )
64
- }
65
-
66
- renderField () {
67
- const id = this.getId()
68
-
69
- const {
70
- name,
71
- required = false,
72
- disabled = false,
73
- readOnly = false,
74
- tabIndex,
75
- accessKey,
76
- placeholder,
77
- onChange = DEFAULT_HANDLE_CHANGE,
78
- fieldRef
79
- } = this.props
80
-
81
- return (
82
- <Field
83
- id={id}
84
- name={name}
85
- required={required}
86
- disabled={disabled}
87
- readOnly={readOnly}
88
- tabIndex={tabIndex}
89
- accessKey={accessKey}
90
- placeholder={placeholder}
91
- onChange={onChange}
92
- fieldRef={fieldRef}
93
- />
94
- )
95
- }
96
-
97
- render () {
98
- const className = this.getClassName()
99
-
100
- return (
101
- <div className={className}>
102
- {this.renderField()}
103
- </div>
104
- )
105
- }
106
- }
107
-
108
- FieldGremlin.propTypes = {
109
- id: PropTypes.string,
110
- name: PropTypes.string.isRequired,
111
- required: PropTypes.bool,
112
- disabled: PropTypes.bool,
113
- readOnly: PropTypes.bool,
114
- placeholder: PropTypes.string,
115
- onChange: PropTypes.func,
116
- fieldRef: PropTypes.shape({
117
- current: PropTypes.shape().isRequired
118
- })
119
- }
120
-
121
- FieldGremlin.defaultProps = {
122
- required: false,
123
- disabled: false,
124
- readOnly: false,
125
- onChange: DEFAULT_HANDLE_CHANGE
126
- }
127
-
128
- export class ValueGremlin extends FieldGremlin {
129
- shouldComponentUpdate (props, state) {
130
- return (
131
- super.shouldComponentUpdate(props) ||
132
- (props.value !== this.props.value)
133
- )
134
- }
135
-
136
- renderField () {
137
- const id = this.getId()
138
-
139
- const {
140
- name,
141
- required = false,
142
- disabled = false,
143
- readOnly = false,
144
- tabIndex,
145
- accessKey,
146
- placeholder,
147
- onChange = DEFAULT_HANDLE_CHANGE,
148
- fieldRef
149
- } = this.props
150
-
151
- return (
152
- <ValueField
153
- id={id}
154
- name={name}
155
- required={required}
156
- disabled={disabled}
157
- readOnly={readOnly}
158
- tabIndex={tabIndex}
159
- accessKey={accessKey}
160
- placeholder={placeholder}
161
- onChange={onChange}
162
- fieldRef={fieldRef}
163
- />
164
- )
165
- }
166
- }
167
-
168
- ValueGremlin.propTypes = {
169
- ...FieldGremlin.propTypes,
170
- value: PropTypes.string,
171
- defaultValue: PropTypes.string
172
- }
173
-
174
- ValueGremlin.defaultProps = {
175
- ...FieldGremlin.defaultProps
176
- }
177
-
178
- export class CheckGremlin extends FieldGremlin {
179
- shouldComponentUpdate (props, state) {
180
- return (
181
- super.shouldComponentUpdate(props) ||
182
- (props.checked !== this.props.checked) ||
183
- (props.onClick !== this.props.onClick)
184
- )
185
- }
186
-
187
- renderField () {
188
- const id = this.getId()
189
-
190
- const {
191
- name,
192
- required = false,
193
- disabled = false,
194
- readOnly = false,
195
- tabIndex,
196
- accessKey,
197
- placeholder,
198
- onChange = DEFAULT_HANDLE_CHANGE,
199
- onClick = DEFAULT_HANDLE_CLICK,
200
- fieldRef
201
- } = this.props
202
-
203
- return (
204
- <CheckField
205
- id={id}
206
- name={name}
207
- required={required}
208
- disabled={disabled}
209
- readOnly={readOnly}
210
- tabIndex={tabIndex}
211
- accessKey={accessKey}
212
- placeholder={placeholder}
213
- onChange={onChange}
214
- onClick={onClick}
215
- fieldRef={fieldRef}
216
- />
217
- )
218
- }
219
- }
220
-
221
- CheckGremlin.propTypes = {
222
- ...FieldGremlin.propTypes,
223
- checked: PropTypes.bool,
224
- defaultChecked: PropTypes.bool,
225
- onClick: PropTypes.func
226
- }
227
-
228
- CheckGremlin.defaultProps = {
229
- ...FieldGremlin.defaultProps,
230
- onClick: DEFAULT_HANDLE_CLICK
231
- }
232
-
233
- export class GroupGremlin extends Component {
234
- getClassName () {
235
- return 'gremlin'
236
- }
237
-
238
- /**
239
- * @param {GroupGremlinProps} props
240
- * @returns {boolean}
241
- */
242
- shouldComponentUpdate (props, state) {
243
- return (
244
- (props.children !== this.props.children) ||
245
- (props.onChange !== this.props.onChange)
246
- )
247
- }
248
-
249
- renderGroup () {
250
- const {
251
- onChange = DEFAULT_HANDLE_CHANGE,
252
- groupRef,
253
- children
254
- } = this.props
255
-
256
- return (
257
- <Group
258
- onChange={onChange}
259
- groupRef={groupRef}>
260
- {children}
261
- </Group>
262
- )
263
- }
264
-
265
- render () {
266
- const className = this.getClassName()
267
-
268
- return (
269
- <div className={className}>
270
- {this.renderGroup()}
271
- </div>
272
- )
273
- }
274
- }
275
-
276
- GroupGremlin.propTypes = {
277
- onChange: PropTypes.func,
278
- children: PropTypes.oneOfType([
279
- PropTypes.node,
280
- PropTypes.arrayOf(
281
- PropTypes.node
282
- )
283
- ]),
284
- groupRef: PropTypes.shape({
285
- current: PropTypes.shape().isRequired
286
- })
287
- }
288
-
289
- GroupGremlin.defaultProps = {
290
- onChange: DEFAULT_HANDLE_CHANGE
291
- }
@@ -1,9 +0,0 @@
1
- declare module '#gremlins/gremlins/number/field' {
2
- import Field from '#gremlins/components/field'
3
-
4
- export default class NumberField extends Field {}
5
- }
6
-
7
- declare module '@modernpoacher/gremlins/number/field' {
8
- export { default } from '#gremlins/gremlins/number/field'
9
- }
@@ -1,9 +0,0 @@
1
- declare module '#gremlins/gremlins/number' {
2
- import { FieldGremlin as Gremlin } from '#gremlins/gremlins'
3
-
4
- export default class NumberGremlin extends Gremlin {}
5
- }
6
-
7
- declare module '@modernpoacher/gremlins/gremlins/number' {
8
- export { default } from '#gremlins/gremlins/number'
9
- }
@@ -1,9 +0,0 @@
1
- declare module '#gremlins/gremlins/password/field' {
2
- import Field from '#gremlins/components/field'
3
-
4
- export default class PasswordField extends Field {}
5
- }
6
-
7
- declare module '@modernpoacher/gremlins/password/field' {
8
- export { default } from '#gremlins/gremlins/password/field'
9
- }
@@ -1,54 +0,0 @@
1
- /**
2
- * PasswordField component
3
- */
4
- import React from 'react'
5
- import classnames from 'classnames'
6
-
7
- import { ValueField } from '#gremlins/components/field'
8
-
9
- export default class PasswordField extends ValueField {
10
- getClassName () {
11
- return classnames(super.getClassName(), 'password')
12
- }
13
-
14
- render () {
15
- const {
16
- id,
17
- name,
18
- value,
19
- defaultValue,
20
- required = false,
21
- disabled = false,
22
- readOnly = false,
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='password'
46
- ref={fieldRef}
47
- />
48
- )
49
- }
50
- }
51
-
52
- PasswordField.propTypes = {
53
- ...ValueField.propTypes
54
- }
@@ -1,9 +0,0 @@
1
- declare module '#gremlins/gremlins/password' {
2
- import { FieldGremlin as Gremlin } from '#gremlins/gremlins'
3
-
4
- export default class PasswordGremlin extends Gremlin {}
5
- }
6
-
7
- declare module '@modernpoacher/gremlins/gremlins/password' {
8
- export { default } from '#gremlins/gremlins/password'
9
- }
@@ -1,9 +0,0 @@
1
- declare module '#gremlins/gremlins/radio/field' {
2
- import Field from '#gremlins/components/field'
3
-
4
- export default class RadioField extends Field {}
5
- }
6
-
7
- declare module '@modernpoacher/gremlins/radio/field' {
8
- export { default } from '#gremlins/gremlins/radio/field'
9
- }
@@ -1,9 +0,0 @@
1
- declare module '#gremlins/gremlins/radio' {
2
- import { FieldGremlin as Gremlin } from '#gremlins/gremlins'
3
-
4
- export default class RadioGremlin extends Gremlin {}
5
- }
6
-
7
- declare module '@modernpoacher/gremlins/gremlins/radio' {
8
- export { default } from '#gremlins/gremlins/radio'
9
- }
@@ -1,9 +0,0 @@
1
- declare module '#gremlins/gremlins/select/field' {
2
- import Field from '#gremlins/components/field'
3
-
4
- export default class SelectField extends Field {}
5
- }
6
-
7
- declare module '@modernpoacher/gremlins/select/field' {
8
- export { default } from '#gremlins/gremlins/select/field'
9
- }
@@ -1,111 +0,0 @@
1
- /**
2
- * SelectField component
3
- */
4
- import React from 'react'
5
- import PropTypes from 'prop-types'
6
- import classnames from 'classnames'
7
-
8
- import { ValueField } from '#gremlins/components/field'
9
-
10
- import {
11
- DEFAULT_HANDLE_CHANGE
12
- } from '#gremlins/common'
13
-
14
- function getSelectedValues ({ target: { selectedOptions } }) {
15
- return (
16
- Array.from(selectedOptions)
17
- .map(({ value, text }) => value || text)
18
- )
19
- }
20
-
21
- function getSelectedValue ({ target: { value } }) {
22
- return value
23
- }
24
-
25
- export default class SelectField extends ValueField {
26
- shouldComponentUpdate (props, state) {
27
- return (
28
- super.shouldComponentUpdate(props) ||
29
- (props.multiple !== this.props.multiple) ||
30
- (props.children !== this.props.children)
31
- )
32
- }
33
-
34
- getClassName () {
35
- return classnames(super.getClassName(), 'select')
36
- }
37
-
38
- handleChange = (event) => {
39
- const {
40
- multiple = false,
41
- onChange = DEFAULT_HANDLE_CHANGE
42
- } = this.props
43
-
44
- if (multiple) {
45
- onChange(getSelectedValues(event))
46
- } else {
47
- onChange(getSelectedValue(event))
48
- }
49
- }
50
-
51
- render () {
52
- const {
53
- id,
54
- name,
55
- value,
56
- defaultValue,
57
- required = false,
58
- disabled = false,
59
- readOnly = false,
60
- tabIndex,
61
- accessKey,
62
- multiple = false,
63
- children,
64
- fieldRef
65
- } = this.props
66
-
67
- const className = this.getClassName()
68
-
69
- return (
70
- <select
71
- id={id}
72
- name={name}
73
- value={value}
74
- defaultValue={defaultValue}
75
- required={required}
76
- disabled={disabled}
77
- readOnly={readOnly}
78
- tabIndex={tabIndex}
79
- accessKey={accessKey}
80
- multiple={multiple}
81
- onChange={this.handleChange}
82
- className={className}
83
- ref={fieldRef}>
84
- {children}
85
- </select>
86
- )
87
- }
88
- }
89
-
90
- SelectField.propTypes = {
91
- ...ValueField.propTypes,
92
- multiple: PropTypes.bool,
93
- value: PropTypes.oneOfType([
94
- PropTypes.string,
95
- PropTypes.arrayOf(
96
- PropTypes.string
97
- )
98
- ]),
99
- defaultValue: PropTypes.oneOfType([
100
- PropTypes.string,
101
- PropTypes.arrayOf(
102
- PropTypes.string
103
- )
104
- ]),
105
- children: PropTypes.oneOfType([
106
- PropTypes.node,
107
- PropTypes.arrayOf(
108
- PropTypes.node
109
- )
110
- ])
111
- }
@@ -1,9 +0,0 @@
1
- declare module '#gremlins/gremlins/select' {
2
- import { FieldGremlin as Gremlin } from '#gremlins/gremlins'
3
-
4
- export default class SelectGremlin extends Gremlin {}
5
- }
6
-
7
- declare module '@modernpoacher/gremlins/gremlins/select' {
8
- export { default } from '#gremlins/gremlins/select'
9
- }
@@ -1,9 +0,0 @@
1
- declare module '#gremlins/gremlins/text/field' {
2
- import Field from '#gremlins/components/field'
3
-
4
- export default class TextField extends Field {}
5
- }
6
-
7
- declare module '@modernpoacher/gremlins/text/field' {
8
- export { default } from '#gremlins/gremlins/text/field'
9
- }
@@ -1,54 +0,0 @@
1
- /**
2
- * TextField component
3
- */
4
- import React from 'react'
5
- import classnames from 'classnames'
6
-
7
- import { ValueField } from '#gremlins/components/field'
8
-
9
- export default class TextField extends ValueField {
10
- getClassName () {
11
- return classnames(super.getClassName(), 'text')
12
- }
13
-
14
- render () {
15
- const {
16
- id,
17
- name,
18
- value,
19
- defaultValue,
20
- required = false,
21
- disabled = false,
22
- readOnly = false,
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='text'
46
- ref={fieldRef}
47
- />
48
- )
49
- }
50
- }
51
-
52
- TextField.propTypes = {
53
- ...ValueField.propTypes
54
- }
@@ -1,9 +0,0 @@
1
- declare module '#gremlins/gremlins/text' {
2
- import { FieldGremlin as Gremlin } from '#gremlins/gremlins'
3
-
4
- export default class TextGremlin extends Gremlin {}
5
- }
6
-
7
- declare module '@modernpoacher/gremlins/gremlins/text' {
8
- export { default } from '#gremlins/gremlins/text'
9
- }
@@ -1,9 +0,0 @@
1
- declare module '#gremlins/gremlins/textarea/field' {
2
- import Field from '#gremlins/components/field'
3
-
4
- export default class TextareaField extends Field {}
5
- }
6
-
7
- declare module '@modernpoacher/gremlins/textarea/field' {
8
- export { default } from '#gremlins/gremlins/textarea/field'
9
- }
@@ -1,53 +0,0 @@
1
- /**
2
- * TextareaField component
3
- */
4
- import React from 'react'
5
- import classnames from 'classnames'
6
-
7
- import { ValueField } from '#gremlins/components/field'
8
-
9
- export default class TextareaField extends ValueField {
10
- getClassName () {
11
- return classnames(super.getClassName(), 'textarea')
12
- }
13
-
14
- render () {
15
- const {
16
- id,
17
- name,
18
- value,
19
- defaultValue,
20
- required = false,
21
- disabled = false,
22
- readOnly = false,
23
- tabIndex,
24
- accessKey,
25
- placeholder,
26
- fieldRef
27
- } = this.props
28
-
29
- const className = this.getClassName()
30
-
31
- return (
32
- <textarea
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
- ref={fieldRef}
46
- />
47
- )
48
- }
49
- }
50
-
51
- TextareaField.propTypes = {
52
- ...ValueField.propTypes
53
- }
@@ -1,9 +0,0 @@
1
- declare module '#gremlins/gremlins/textarea' {
2
- import { FieldGremlin as Gremlin } from '#gremlins/gremlins'
3
-
4
- export default class TextareaGremlin extends Gremlin {}
5
- }
6
-
7
- declare module '@modernpoacher/gremlins/gremlins/textarea' {
8
- export { default } from '#gremlins/gremlins/textarea'
9
- }
File without changes
File without changes
File without changes