@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.
- package/.prettierignore +4 -0
- package/babel.config.cjs +4 -1
- package/eslint.config.mjs +33 -71
- package/index.d.mts +169 -2
- package/jest.after-each.mjs +10 -0
- package/jest.before-each.mjs +10 -0
- package/jest.config.mjs +11 -1
- package/package.json +84 -29
- package/src/{components → js/components}/common/disabled/index.cjs +5 -2
- package/src/js/components/common/disabled/index.d.cts +1 -0
- package/src/js/components/common/disabled/index.jsx +11 -0
- package/src/{components → js/components}/common/readonly/index.cjs +5 -2
- package/src/js/components/common/readonly/index.d.cts +1 -0
- package/src/js/components/common/readonly/index.jsx +11 -0
- package/src/{components → js/components}/common/required/index.cjs +5 -2
- package/src/js/components/common/required/index.d.cts +1 -0
- package/src/js/components/common/required/index.jsx +11 -0
- package/src/{components → js/components}/common/text-content/index.cjs +5 -2
- package/src/js/components/common/text-content/index.d.cts +2 -0
- package/src/{components → js/components}/common/text-content/index.d.mts +1 -3
- package/src/{components → js/components}/common/text-content/index.jsx +6 -5
- package/src/{components → js/components}/field/index.cjs +10 -2
- package/src/js/components/field/index.d.cts +1 -0
- package/src/js/components/field/index.d.mts +24 -0
- package/src/js/components/field/index.jsx +98 -0
- package/src/{components → js/components}/group/index.cjs +5 -2
- package/src/js/components/group/index.d.cts +2 -0
- package/src/js/components/group/index.d.mts +9 -0
- package/src/js/components/group/index.jsx +5 -0
- package/src/js/components/index.cjs +29 -0
- package/src/js/components/index.d.cts +2 -0
- package/src/js/components/index.d.mts +2 -0
- package/src/js/components/index.mjs +8 -0
- package/src/{gremlins → js/gremlins}/checkbox/field/index.cjs +5 -2
- package/src/js/gremlins/checkbox/field/index.d.cts +2 -0
- package/src/js/gremlins/checkbox/field/index.d.mts +14 -0
- package/src/{gremlins → js/gremlins}/checkbox/field/index.jsx +21 -10
- package/src/{gremlins → js/gremlins}/checkbox/index.cjs +5 -2
- package/src/js/gremlins/checkbox/index.d.cts +2 -0
- package/src/js/gremlins/checkbox/index.d.mts +24 -0
- package/src/{gremlins → js/gremlins}/checkbox/index.jsx +31 -23
- package/src/{gremlins → js/gremlins}/email/field/index.cjs +5 -2
- package/src/js/gremlins/email/field/index.d.cts +2 -0
- package/src/js/gremlins/email/field/index.d.mts +14 -0
- package/src/js/gremlins/email/field/index.jsx +83 -0
- package/src/{gremlins → js/gremlins}/email/index.cjs +5 -2
- package/src/js/gremlins/email/index.d.cts +2 -0
- package/src/js/gremlins/email/index.d.mts +18 -0
- package/src/{gremlins → js/gremlins}/email/index.jsx +25 -12
- package/src/{gremlins → js/gremlins}/fieldset/group/index.cjs +5 -2
- package/src/js/gremlins/fieldset/group/index.d.cts +2 -0
- package/src/js/gremlins/fieldset/group/index.d.mts +12 -0
- package/src/js/gremlins/fieldset/group/index.jsx +19 -0
- package/src/{gremlins → js/gremlins}/fieldset/index.cjs +5 -2
- package/src/js/gremlins/fieldset/index.d.cts +2 -0
- package/src/js/gremlins/fieldset/index.d.mts +14 -0
- package/src/js/gremlins/fieldset/index.jsx +37 -0
- package/src/{gremlins → js/gremlins}/index.cjs +9 -4
- package/src/js/gremlins/index.d.cts +5 -0
- package/src/js/gremlins/index.d.mts +27 -0
- package/src/js/gremlins/index.jsx +162 -0
- package/src/{gremlins → js/gremlins}/number/field/index.cjs +5 -2
- package/src/js/gremlins/number/field/index.d.cts +2 -0
- package/src/js/gremlins/number/field/index.d.mts +14 -0
- package/src/{gremlins → js/gremlins}/number/field/index.jsx +40 -7
- package/src/{gremlins → js/gremlins}/number/index.cjs +5 -2
- package/src/js/gremlins/number/index.d.cts +2 -0
- package/src/js/gremlins/number/index.d.mts +18 -0
- package/src/{gremlins → js/gremlins}/number/index.jsx +25 -8
- package/src/{gremlins → js/gremlins}/password/field/index.cjs +5 -2
- package/src/js/gremlins/password/field/index.d.cts +2 -0
- package/src/js/gremlins/password/field/index.d.mts +14 -0
- package/src/js/gremlins/password/field/index.jsx +83 -0
- package/src/{gremlins → js/gremlins}/password/index.cjs +5 -2
- package/src/js/gremlins/password/index.d.cts +2 -0
- package/src/js/gremlins/password/index.d.mts +18 -0
- package/src/{gremlins → js/gremlins}/password/index.jsx +25 -12
- package/src/{gremlins → js/gremlins}/radio/field/index.cjs +5 -2
- package/src/js/gremlins/radio/field/index.d.cts +2 -0
- package/src/js/gremlins/radio/field/index.d.mts +14 -0
- package/src/{gremlins → js/gremlins}/radio/field/index.jsx +20 -9
- package/src/{gremlins → js/gremlins}/radio/index.cjs +5 -2
- package/src/js/gremlins/radio/index.d.cts +2 -0
- package/src/js/gremlins/radio/index.d.mts +24 -0
- package/src/{gremlins → js/gremlins}/radio/index.jsx +33 -17
- package/src/{gremlins → js/gremlins}/select/field/index.cjs +5 -2
- package/src/js/gremlins/select/field/index.d.cts +2 -0
- package/src/js/gremlins/select/field/index.d.mts +18 -0
- package/src/js/gremlins/select/field/index.jsx +200 -0
- package/src/{gremlins → js/gremlins}/select/index.cjs +5 -2
- package/src/js/gremlins/select/index.d.cts +2 -0
- package/src/js/gremlins/select/index.d.mts +18 -0
- package/src/{gremlins → js/gremlins}/select/index.jsx +53 -16
- package/src/{gremlins → js/gremlins}/text/field/index.cjs +5 -2
- package/src/js/gremlins/text/field/index.d.cts +2 -0
- package/src/js/gremlins/text/field/index.d.mts +14 -0
- package/src/js/gremlins/text/field/index.jsx +83 -0
- package/src/{gremlins → js/gremlins}/text/index.cjs +5 -2
- package/src/js/gremlins/text/index.d.cts +2 -0
- package/src/js/gremlins/text/index.d.mts +18 -0
- package/src/{gremlins → js/gremlins}/text/index.jsx +25 -12
- package/src/{gremlins → js/gremlins}/textarea/field/index.cjs +5 -2
- package/src/js/gremlins/textarea/field/index.d.cts +2 -0
- package/src/js/gremlins/textarea/field/index.d.mts +18 -0
- package/src/js/gremlins/textarea/field/index.jsx +81 -0
- package/src/{gremlins → js/gremlins}/textarea/index.cjs +5 -2
- package/src/js/gremlins/textarea/index.d.cts +2 -0
- package/src/js/gremlins/textarea/index.d.mts +18 -0
- package/src/{gremlins → js/gremlins}/textarea/index.jsx +25 -12
- package/src/js/super/components/field/index.cjs +20 -0
- package/src/js/super/components/field/index.d.cts +2 -0
- package/src/js/super/components/field/index.d.mts +23 -0
- package/src/{components → js/super/components}/field/index.jsx +44 -87
- package/src/js/super/components/group/index.cjs +20 -0
- package/src/js/super/components/group/index.d.cts +2 -0
- package/src/js/super/components/group/index.d.mts +18 -0
- package/src/js/super/components/group/index.jsx +59 -0
- package/src/js/super/components/index.cjs +23 -0
- package/src/js/super/components/index.d.cts +2 -0
- package/src/js/super/components/index.d.mts +2 -0
- package/src/js/super/components/index.mjs +8 -0
- package/src/js/super/gremlins/index.cjs +22 -0
- package/src/js/super/gremlins/index.d.cts +4 -0
- package/src/js/super/gremlins/index.d.mts +36 -0
- package/src/js/super/gremlins/index.jsx +176 -0
- package/src/sass/.stylelintrc +14 -0
- package/src/sass/_gremlins.scss +59 -0
- package/src/sass/gremlins/_checkbox.scss +87 -0
- package/src/sass/gremlins/_disabled.scss +15 -0
- package/src/sass/gremlins/_error.scss +48 -0
- package/src/sass/gremlins/_radio.scss +93 -0
- package/.publish/README.md +0 -20
- package/src/common/index.d.mts +0 -9
- package/src/common/index.mjs +0 -7
- package/src/components/common/disabled/index.jsx +0 -9
- package/src/components/common/readonly/index.jsx +0 -9
- package/src/components/common/required/index.jsx +0 -9
- package/src/components/field/index.d.mts +0 -23
- package/src/components/group/index.d.mts +0 -16
- package/src/components/group/index.jsx +0 -59
- package/src/gremlins/checkbox/field/index.d.mts +0 -9
- package/src/gremlins/checkbox/index.d.mts +0 -9
- package/src/gremlins/email/field/index.d.mts +0 -9
- package/src/gremlins/email/field/index.jsx +0 -54
- package/src/gremlins/email/index.d.mts +0 -9
- package/src/gremlins/fieldset/group/index.d.mts +0 -9
- package/src/gremlins/fieldset/group/index.jsx +0 -16
- package/src/gremlins/fieldset/index.d.mts +0 -9
- package/src/gremlins/fieldset/index.jsx +0 -41
- package/src/gremlins/index.d.mts +0 -45
- package/src/gremlins/index.jsx +0 -291
- package/src/gremlins/number/field/index.d.mts +0 -9
- package/src/gremlins/number/index.d.mts +0 -9
- package/src/gremlins/password/field/index.d.mts +0 -9
- package/src/gremlins/password/field/index.jsx +0 -54
- package/src/gremlins/password/index.d.mts +0 -9
- package/src/gremlins/radio/field/index.d.mts +0 -9
- package/src/gremlins/radio/index.d.mts +0 -9
- package/src/gremlins/select/field/index.d.mts +0 -9
- package/src/gremlins/select/field/index.jsx +0 -111
- package/src/gremlins/select/index.d.mts +0 -9
- package/src/gremlins/text/field/index.d.mts +0 -9
- package/src/gremlins/text/field/index.jsx +0 -54
- package/src/gremlins/text/index.d.mts +0 -9
- package/src/gremlins/textarea/field/index.d.mts +0 -9
- package/src/gremlins/textarea/field/index.jsx +0 -53
- package/src/gremlins/textarea/index.d.mts +0 -9
- /package/src/{components → js/components}/common/disabled/index.d.mts +0 -0
- /package/src/{components → js/components}/common/readonly/index.d.mts +0 -0
- /package/src/{components → js/components}/common/required/index.d.mts +0 -0
- /package/src/{index.cjs → js/index.cjs} +0 -0
- /package/src/{index.d.mts → js/index.d.mts} +0 -0
- /package/src/{index.mjs → js/index.mjs} +0 -0
package/.prettierignore
ADDED
package/babel.config.cjs
CHANGED
|
@@ -51,7 +51,10 @@ module.exports = (api) => {
|
|
|
51
51
|
presets,
|
|
52
52
|
plugins,
|
|
53
53
|
ignore: [
|
|
54
|
-
/node_modules\/(?!@modernpoacher\/cogs|@modernpoacher\/sprockets|@modernpoacher\/gremlins)
|
|
54
|
+
/node_modules\/(?!@modernpoacher\/cogs|@modernpoacher\/sprockets|@modernpoacher\/gremlins)\//,
|
|
55
|
+
/node_modules\/(?!react-component-instance)\//,
|
|
56
|
+
/node_modules\/(?!react-component-snapshot)\//,
|
|
57
|
+
/node_modules\/(?!react-component-name)\//
|
|
55
58
|
]
|
|
56
59
|
}
|
|
57
60
|
}
|
package/eslint.config.mjs
CHANGED
|
@@ -58,12 +58,11 @@ export default [
|
|
|
58
58
|
]
|
|
59
59
|
},
|
|
60
60
|
/**
|
|
61
|
-
* React config for all `jsx`
|
|
61
|
+
* React config for all `jsx` files
|
|
62
62
|
*/
|
|
63
63
|
{
|
|
64
64
|
...reactPlugin.configs.flat.recommended,
|
|
65
65
|
settings: {
|
|
66
|
-
...reactPlugin.configs.flat.recommended.settings,
|
|
67
66
|
...reactSettings
|
|
68
67
|
}
|
|
69
68
|
},
|
|
@@ -80,7 +79,9 @@ export default [
|
|
|
80
79
|
],
|
|
81
80
|
ignores: [
|
|
82
81
|
'src',
|
|
83
|
-
'stories'
|
|
82
|
+
'stories',
|
|
83
|
+
'test',
|
|
84
|
+
'jest.*.mjs'
|
|
84
85
|
],
|
|
85
86
|
languageOptions: {
|
|
86
87
|
globals: {
|
|
@@ -99,16 +100,26 @@ export default [
|
|
|
99
100
|
}
|
|
100
101
|
}
|
|
101
102
|
}),
|
|
103
|
+
standard({
|
|
104
|
+
files: [
|
|
105
|
+
'test/**/*.{mjs,cjs,mts,cts}'
|
|
106
|
+
],
|
|
107
|
+
languageOptions: {
|
|
108
|
+
globals: {
|
|
109
|
+
...globals.mocha
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}),
|
|
102
113
|
/**
|
|
103
|
-
* Standard config for all `jsx`
|
|
114
|
+
* Standard config for all `jsx` files
|
|
104
115
|
*/
|
|
105
116
|
standard({
|
|
106
117
|
files: [
|
|
107
|
-
'src/**/*.
|
|
118
|
+
'src/**/*.jsx',
|
|
108
119
|
'stories/**/*.jsx'
|
|
109
120
|
],
|
|
110
121
|
ignores: [
|
|
111
|
-
'src/**/__tests__/**/*.
|
|
122
|
+
'src/**/__tests__/**/*.jsx',
|
|
112
123
|
'stories/**/__tests__/**/*.jsx'
|
|
113
124
|
],
|
|
114
125
|
languageOptions: {
|
|
@@ -120,25 +131,23 @@ export default [
|
|
|
120
131
|
globals: {
|
|
121
132
|
...globals.browser
|
|
122
133
|
}
|
|
123
|
-
},
|
|
134
|
+
}, // @ts-expect-error Storybook
|
|
124
135
|
plugins: {
|
|
125
136
|
...reactPlugins,
|
|
126
137
|
...storybookPlugins
|
|
127
|
-
},
|
|
138
|
+
}, // @ts-expect-error Storybook
|
|
128
139
|
rules: {
|
|
129
140
|
...reactRules
|
|
130
141
|
},
|
|
131
142
|
settings: {
|
|
132
|
-
...reactSettings
|
|
133
|
-
'import/resolver': {
|
|
134
|
-
'babel-module': {}
|
|
135
|
-
}
|
|
143
|
+
...reactSettings
|
|
136
144
|
}
|
|
137
145
|
}),
|
|
138
146
|
standard({
|
|
139
147
|
files: [
|
|
140
|
-
'src/**/__tests__/**/*.
|
|
141
|
-
'stories/**/__tests__/**/*.jsx'
|
|
148
|
+
'src/**/__tests__/**/*.jsx',
|
|
149
|
+
'stories/**/__tests__/**/*.jsx',
|
|
150
|
+
'jest.*.mjs'
|
|
142
151
|
],
|
|
143
152
|
languageOptions: {
|
|
144
153
|
parser: babelParser,
|
|
@@ -150,19 +159,16 @@ export default [
|
|
|
150
159
|
...globals.browser,
|
|
151
160
|
...globals.jest
|
|
152
161
|
}
|
|
153
|
-
},
|
|
162
|
+
}, // @ts-expect-error Storybook
|
|
154
163
|
plugins: {
|
|
155
164
|
...reactPlugins,
|
|
156
165
|
...storybookPlugins
|
|
157
|
-
},
|
|
166
|
+
}, // @ts-expect-error Storybook
|
|
158
167
|
rules: {
|
|
159
168
|
...reactRules
|
|
160
169
|
},
|
|
161
170
|
settings: {
|
|
162
|
-
...reactSettings
|
|
163
|
-
'import/resolver': {
|
|
164
|
-
'babel-module': {}
|
|
165
|
-
}
|
|
171
|
+
...reactSettings
|
|
166
172
|
}
|
|
167
173
|
}),
|
|
168
174
|
/**
|
|
@@ -173,80 +179,36 @@ export default [
|
|
|
173
179
|
'**/*.{mts,cts}'
|
|
174
180
|
],
|
|
175
181
|
ignores: [
|
|
176
|
-
'src'
|
|
177
|
-
|
|
178
|
-
languageOptions: {
|
|
179
|
-
globals: {
|
|
180
|
-
...globals.node,
|
|
181
|
-
GremlinsTypes: 'readonly'
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
}),
|
|
185
|
-
typescript({
|
|
186
|
-
files: [
|
|
187
|
-
'src/**/*.{mts,cts}'
|
|
188
|
-
],
|
|
189
|
-
languageOptions: {
|
|
190
|
-
globals: {
|
|
191
|
-
...globals.browser
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}),
|
|
195
|
-
/**
|
|
196
|
-
* TypeScript config for only `tsx` files
|
|
197
|
-
*/
|
|
198
|
-
typescript({
|
|
199
|
-
files: [
|
|
200
|
-
'src/**/*.tsx'
|
|
201
|
-
],
|
|
202
|
-
ignores: [
|
|
203
|
-
'src/**/__tests__/**/*.tsx'
|
|
182
|
+
'src',
|
|
183
|
+
'test'
|
|
204
184
|
],
|
|
205
185
|
languageOptions: {
|
|
206
186
|
parser: typescriptParser,
|
|
207
187
|
parserOptions: {
|
|
208
|
-
...reactParserOptions,
|
|
209
188
|
projectService: true,
|
|
210
189
|
project: 'tsconfig.json'
|
|
211
190
|
},
|
|
212
191
|
globals: {
|
|
213
|
-
...globals.
|
|
192
|
+
...globals.node,
|
|
193
|
+
GremlinsTypes: 'readonly'
|
|
214
194
|
}
|
|
215
|
-
},
|
|
216
|
-
plugins: {
|
|
217
|
-
...reactPlugins
|
|
218
|
-
},
|
|
219
|
-
rules: {
|
|
220
|
-
...reactRules
|
|
221
|
-
},
|
|
222
|
-
settings: {
|
|
223
|
-
...reactSettings
|
|
224
195
|
}
|
|
225
196
|
}),
|
|
226
197
|
typescript({
|
|
227
198
|
files: [
|
|
228
|
-
'src
|
|
199
|
+
'src/**/*.{mts,cts}',
|
|
200
|
+
'test/**/*.{mts,cts}'
|
|
229
201
|
],
|
|
230
202
|
languageOptions: {
|
|
231
203
|
parser: typescriptParser,
|
|
232
204
|
parserOptions: {
|
|
233
|
-
...reactParserOptions,
|
|
234
205
|
projectService: true,
|
|
235
206
|
project: 'tsconfig.json'
|
|
236
207
|
},
|
|
237
208
|
globals: {
|
|
238
209
|
...globals.browser,
|
|
239
|
-
|
|
210
|
+
GremlinsTypes: 'readonly'
|
|
240
211
|
}
|
|
241
|
-
},
|
|
242
|
-
plugins: {
|
|
243
|
-
...reactPlugins
|
|
244
|
-
},
|
|
245
|
-
rules: {
|
|
246
|
-
...reactRules
|
|
247
|
-
},
|
|
248
|
-
settings: {
|
|
249
|
-
...reactSettings
|
|
250
212
|
}
|
|
251
213
|
})
|
|
252
214
|
]
|
package/index.d.mts
CHANGED
|
@@ -1,8 +1,175 @@
|
|
|
1
|
+
import type React from 'react'
|
|
2
|
+
|
|
1
3
|
declare global {
|
|
2
4
|
namespace GremlinsTypes {
|
|
3
|
-
export type
|
|
5
|
+
export type OnEventType = (
|
|
6
|
+
value?: string | string[],
|
|
7
|
+
checked?: boolean
|
|
8
|
+
) => void
|
|
9
|
+
|
|
10
|
+
export interface FieldErrorType {
|
|
11
|
+
text: string
|
|
12
|
+
href: string
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export namespace Super {
|
|
16
|
+
export namespace Gremlins {
|
|
17
|
+
export interface FieldGremlinProps {
|
|
18
|
+
id?: string
|
|
19
|
+
name: string
|
|
20
|
+
value?: string
|
|
21
|
+
required?: boolean
|
|
22
|
+
disabled?: boolean
|
|
23
|
+
readOnly?: boolean
|
|
24
|
+
tabIndex?: number
|
|
25
|
+
accessKey?: string
|
|
26
|
+
placeholder?: string
|
|
27
|
+
onChange?: OnEventType
|
|
28
|
+
fieldRef?: React.RefObject<any> // eslint-disable-line @typescript-eslint/no-explicit-any -- Simplicity
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export type FieldGremlinState = Record<PropertyKey, unknown>
|
|
32
|
+
|
|
33
|
+
export interface GroupGremlinProps extends React.PropsWithChildren {
|
|
34
|
+
groupRef?: React.RefObject<any> // eslint-disable-line @typescript-eslint/no-explicit-any -- Simplicity
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export type GroupGremlinState = Record<PropertyKey, unknown>
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export namespace Components {
|
|
41
|
+
export namespace Field {
|
|
42
|
+
export type FieldProps = Gremlins.FieldGremlinProps
|
|
43
|
+
|
|
44
|
+
export type FieldState = Gremlins.FieldGremlinState
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export namespace Group {
|
|
48
|
+
export type GroupProps = Gremlins.GroupGremlinProps
|
|
49
|
+
|
|
50
|
+
export type GroupState = Gremlins.GroupGremlinState
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export namespace Components {
|
|
56
|
+
export namespace Common {
|
|
57
|
+
export namespace TextContent {
|
|
58
|
+
export interface TextContentProps {
|
|
59
|
+
textContent?: string
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export namespace Field {
|
|
65
|
+
export interface ValueProps extends Super.Components.Field.FieldProps {
|
|
66
|
+
defaultValue?: string
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export interface CheckProps extends Super.Components.Field.FieldProps {
|
|
70
|
+
checked?: boolean
|
|
71
|
+
defaultChecked?: boolean
|
|
72
|
+
onClick?: OnEventType
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export namespace Checkbox {
|
|
76
|
+
export type CheckboxProps = CheckProps
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export namespace Email {
|
|
80
|
+
export type EmailProps = ValueProps
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export namespace Number {
|
|
84
|
+
export type NumberProps = ValueProps
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export namespace Password {
|
|
88
|
+
export type PasswordProps = ValueProps
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export namespace Radio {
|
|
92
|
+
export type RadioProps = CheckProps
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export namespace Select {
|
|
96
|
+
export interface SelectProps extends ValueProps, React.PropsWithChildren {
|
|
97
|
+
multiple?: boolean
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export namespace Text {
|
|
102
|
+
export type TextProps = ValueProps
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export namespace Textarea {
|
|
106
|
+
export type TextareaProps = ValueProps
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
export namespace Group {
|
|
111
|
+
export type GroupProps = Super.Components.Group.GroupProps
|
|
112
|
+
|
|
113
|
+
export type FieldsetProps = GroupProps
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export namespace Gremlins {
|
|
118
|
+
export interface ValueProps extends Super.Gremlins.FieldGremlinProps {
|
|
119
|
+
defaultValue?: string
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export interface CheckProps extends Super.Gremlins.FieldGremlinProps {
|
|
123
|
+
checked?: boolean
|
|
124
|
+
defaultChecked?: boolean
|
|
125
|
+
onClick?: OnEventType
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export type GroupProps = Super.Gremlins.GroupGremlinProps
|
|
129
|
+
|
|
130
|
+
export namespace Checkbox {
|
|
131
|
+
export type CheckboxProps = CheckProps
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export namespace Email {
|
|
135
|
+
export type EmailProps = ValueProps
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export namespace Number {
|
|
139
|
+
export interface NumberProps extends Omit<Omit<ValueProps, 'value'>, 'defaultValue'> {
|
|
140
|
+
value?: string | number
|
|
141
|
+
defaultValue?: string | number
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export namespace Password {
|
|
146
|
+
export type PasswordProps = ValueProps
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export namespace Radio {
|
|
150
|
+
export type RadioProps = CheckProps
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
export namespace Select {
|
|
154
|
+
export interface SelectProps extends Omit<Omit<ValueProps, 'value'>, 'defaultValue'>, React.PropsWithChildren {
|
|
155
|
+
value?: string | string[]
|
|
156
|
+
defaultValue?: string | string[]
|
|
157
|
+
multiple?: boolean
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export namespace Text {
|
|
162
|
+
export type TextProps = ValueProps
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
export namespace Textarea {
|
|
166
|
+
export type TextareaProps = ValueProps
|
|
167
|
+
}
|
|
4
168
|
|
|
5
|
-
|
|
169
|
+
export namespace Fieldset {
|
|
170
|
+
export type FieldsetProps = GroupProps
|
|
171
|
+
}
|
|
172
|
+
}
|
|
6
173
|
}
|
|
7
174
|
}
|
|
8
175
|
|
package/jest.config.mjs
CHANGED
|
@@ -14,5 +14,15 @@ export default {
|
|
|
14
14
|
'^.+\\.jsx$': 'babel-jest',
|
|
15
15
|
'^.+\\.mjs$': 'babel-jest'
|
|
16
16
|
},
|
|
17
|
-
|
|
17
|
+
transformIgnorePatterns: [
|
|
18
|
+
'/node_modules\\/(?!react-component-instance)\\/',
|
|
19
|
+
'/node_modules\\/(?!react-component-snapshot)\\/',
|
|
20
|
+
'/node_modules\\/(?!react-component-name)\\/'
|
|
21
|
+
],
|
|
22
|
+
moduleFileExtensions: ['js', 'jsx', 'mjs'],
|
|
23
|
+
testEnvironment: 'jsdom',
|
|
24
|
+
setupFilesAfterEnv: [
|
|
25
|
+
'<rootDir>/jest.before-each.mjs',
|
|
26
|
+
'<rootDir>/jest.after-each.mjs'
|
|
27
|
+
]
|
|
18
28
|
}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@modernpoacher/gremlins",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Gremlins",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Gremlins",
|
|
7
7
|
"React"
|
|
8
8
|
],
|
|
9
|
-
"main": "./src/index.
|
|
9
|
+
"main": "./src/js/index.mjs",
|
|
10
10
|
"type": "module",
|
|
11
11
|
"types": "./index.d.mts",
|
|
12
12
|
"author": {
|
|
@@ -23,20 +23,27 @@
|
|
|
23
23
|
"url": "git+ssh://git@github.com/modernpoacher/gremlins.git"
|
|
24
24
|
},
|
|
25
25
|
"scripts": {
|
|
26
|
-
"build": "cross-env DEBUG=@modernpoacher/gremlins* webpack",
|
|
26
|
+
"build": "cross-env DEBUG=@modernpoacher/gremlins* webpack -c .storybook/webpack.config.mjs",
|
|
27
27
|
"build-storybook": "storybook build",
|
|
28
|
-
"build:watch": "
|
|
29
|
-
"lint": "
|
|
30
|
-
"lint:fix": "npm run lint
|
|
28
|
+
"build:watch": "npm run build -- -w",
|
|
29
|
+
"lint": "npm run lint:js && npm run lint:sass",
|
|
30
|
+
"lint:fix": "npm run lint:js:fix && npm run lint:sass:fix",
|
|
31
|
+
"lint:js": "eslint",
|
|
32
|
+
"lint:js:fix": "npm run lint:js -- --fix",
|
|
33
|
+
"lint:sass": "stylelint src/sass .storybook/*.scss",
|
|
34
|
+
"lint:sass:fix": "npm run lint:sass -- --fix",
|
|
31
35
|
"nvm": "bash nvm.sh",
|
|
32
36
|
"prebuild": "npm run nvm",
|
|
33
37
|
"prelint": "npm run nvm",
|
|
34
38
|
"prepare": "husky",
|
|
35
|
-
"prestorybook": "npm run build && npm run transform",
|
|
39
|
+
"prestorybook": "npm run build && npm run prettier && npm run transform",
|
|
36
40
|
"pretest": "npm run nvm",
|
|
41
|
+
"prettier": "prettier src/sass .storybook --write",
|
|
37
42
|
"storybook": "storybook dev -p 6008",
|
|
38
|
-
"test": "
|
|
39
|
-
"
|
|
43
|
+
"test": "npm run test:mocha && npm run test:jest",
|
|
44
|
+
"test:jest": "cross-env NODE_ENV=test jest",
|
|
45
|
+
"test:mocha": "cross-env NODE_ENV=test mocha test --recursive",
|
|
46
|
+
"transform": "cross-env DEBUG=@modernpoacher/gremlins* .storybook/transform.sh"
|
|
40
47
|
},
|
|
41
48
|
"dependencies": {
|
|
42
49
|
"classnames": "^2.5.1",
|
|
@@ -49,8 +56,8 @@
|
|
|
49
56
|
"@babel/preset-react": "^7.26.3",
|
|
50
57
|
"@babel/register": "^7.25.9",
|
|
51
58
|
"@modernpoacher/design-system": "1.2.0",
|
|
52
|
-
"@sequencemedia/eslint-config-standard": "^0.2.
|
|
53
|
-
"@sequencemedia/eslint-config-typescript": "^0.1.
|
|
59
|
+
"@sequencemedia/eslint-config-standard": "^0.2.47",
|
|
60
|
+
"@sequencemedia/eslint-config-typescript": "^0.1.69",
|
|
54
61
|
"@storybook/addon-actions": "^8.6.10",
|
|
55
62
|
"@storybook/addon-essentials": "^8.6.10",
|
|
56
63
|
"@storybook/addon-links": "^8.6.10",
|
|
@@ -58,22 +65,33 @@
|
|
|
58
65
|
"@storybook/manager-api": "^8.6.10",
|
|
59
66
|
"@storybook/react": "^8.6.10",
|
|
60
67
|
"@storybook/react-webpack5": "^8.6.10",
|
|
68
|
+
"@storybook/test": "^8.6.10",
|
|
61
69
|
"@storybook/theming": "^8.6.10",
|
|
62
|
-
"@
|
|
70
|
+
"@testing-library/jest-dom": "^6.6.3",
|
|
71
|
+
"@testing-library/react": "^16.2.0",
|
|
72
|
+
"@types/babel__register": "^7.17.3",
|
|
73
|
+
"@types/chai": "^5.2.1",
|
|
74
|
+
"@types/debug": "^4.1.12",
|
|
75
|
+
"@types/jest": "^29.5.14",
|
|
76
|
+
"@types/mocha": "^10.0.10",
|
|
77
|
+
"@types/prop-types": "^15.7.14",
|
|
78
|
+
"@types/react": "^19.0.12",
|
|
79
|
+
"@types/react-dom": "^19.0.4",
|
|
63
80
|
"@typescript-eslint/eslint-plugin": "^8.28.0",
|
|
64
81
|
"@typescript-eslint/parser": "^8.28.0",
|
|
65
82
|
"autoprefixer": "^10.4.21",
|
|
66
|
-
"
|
|
83
|
+
"chai": "^5.2.0",
|
|
67
84
|
"core-js": "^3.41.0",
|
|
68
85
|
"cross-env": "^7.0.3",
|
|
69
86
|
"eslint": "^9.23.0",
|
|
70
|
-
"eslint-import-resolver-babel-module": "^5.3.2",
|
|
71
87
|
"eslint-plugin-react": "^7.37.4",
|
|
72
88
|
"eslint-plugin-storybook": "^0.12.0",
|
|
73
89
|
"globals": "^16.0.0",
|
|
74
90
|
"husky": "^9.1.7",
|
|
75
91
|
"jest": "^29.7.0",
|
|
92
|
+
"jest-environment-jsdom": "^29.7.0",
|
|
76
93
|
"mini-css-extract-plugin": "^2.9.2",
|
|
94
|
+
"mocha": "^11.1.0",
|
|
77
95
|
"perfectionist": "^2.4.0",
|
|
78
96
|
"postcss": "^8.5.3",
|
|
79
97
|
"postcss-discard-comments": "^7.0.3",
|
|
@@ -81,35 +99,72 @@
|
|
|
81
99
|
"postcss-import": "^16.1.0",
|
|
82
100
|
"postcss-loader": "^8.1.1",
|
|
83
101
|
"postcss-map": "^0.11.0",
|
|
102
|
+
"prettier": "^3.5.3",
|
|
84
103
|
"prop-types": "^15.8.1",
|
|
85
|
-
"react": "
|
|
86
|
-
"react-
|
|
87
|
-
"react-
|
|
104
|
+
"react": "^19.0.0",
|
|
105
|
+
"react-component-instance": "^0.0.16",
|
|
106
|
+
"react-component-snapshot": "^0.0.16",
|
|
107
|
+
"react-dom": "^19.0.0",
|
|
88
108
|
"remove-files-webpack-plugin": "^1.5.0",
|
|
89
109
|
"sass": "^1.86.0",
|
|
90
110
|
"sass-loader": "^16.0.5",
|
|
91
111
|
"storybook": "^8.6.10",
|
|
112
|
+
"stylelint": "^16.17.0",
|
|
113
|
+
"stylelint-config-recommended-scss": "^14.1.0",
|
|
114
|
+
"stylelint-scss": "^6.11.1",
|
|
92
115
|
"webpack": "^5.98.0",
|
|
93
116
|
"webpack-cli": "^6.0.1"
|
|
94
117
|
},
|
|
95
118
|
"imports": {
|
|
96
|
-
"#
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
"#gremlins/
|
|
101
|
-
|
|
119
|
+
"#gremlins": {
|
|
120
|
+
"require": "./src/js/index.cjs",
|
|
121
|
+
"import": "./src/js/index.mjs"
|
|
122
|
+
},
|
|
123
|
+
"#gremlins/components": {
|
|
124
|
+
"require": "./src/js/components/index.cjs",
|
|
125
|
+
"import": "./src/js/components/index.mjs"
|
|
126
|
+
},
|
|
127
|
+
"#gremlins/components/*": "./src/js/components/*/index.cjs",
|
|
128
|
+
"#gremlins/gremlins": "./src/js/gremlins/index.cjs",
|
|
129
|
+
"#gremlins/gremlins/*": "./src/js/gremlins/*/index.cjs",
|
|
130
|
+
"#gremlins/super": {
|
|
131
|
+
"require": "./src/js/super/index.cjs",
|
|
132
|
+
"import": "./src/js/super/index.mjs"
|
|
133
|
+
},
|
|
134
|
+
"#gremlins/super/components": {
|
|
135
|
+
"require": "./src/js/super/components/index.cjs",
|
|
136
|
+
"import": "./src/js/super/components/index.mjs"
|
|
137
|
+
},
|
|
138
|
+
"#gremlins/super/components/*": "./src/js/super/components/*/index.cjs",
|
|
139
|
+
"#gremlins/super/gremlins": "./src/js/super/gremlins/index.cjs",
|
|
140
|
+
"#gremlins/super/gremlins/*": "./src/js/super/gremlins/*/index.cjs",
|
|
141
|
+
"#stories/errors": "./stories/errors.mjs",
|
|
142
|
+
"#stories/gremlins/*": "./stories/cogs/gremlins/index.stories.jsx",
|
|
102
143
|
"#stories/state": "./stories/state/index.jsx",
|
|
103
144
|
"#stories/state/*": "./stories/state/*/index.jsx"
|
|
104
145
|
},
|
|
105
146
|
"exports": {
|
|
106
147
|
".": {
|
|
107
|
-
"require": "./src/index.cjs",
|
|
108
|
-
"import": "./src/index.mjs"
|
|
148
|
+
"require": "./src/js/index.cjs",
|
|
149
|
+
"import": "./src/js/index.mjs"
|
|
150
|
+
},
|
|
151
|
+
"./components": {
|
|
152
|
+
"require": "./src/js/components/index.cjs",
|
|
153
|
+
"import": "./src/js/components/index.mjs"
|
|
154
|
+
},
|
|
155
|
+
"./components/*": "./src/js/components/*/index.cjs",
|
|
156
|
+
"./gremlins": "./src/js/gremlins/index.cjs",
|
|
157
|
+
"./gremlins/*": "./src/js/gremlins/*/index.cjs",
|
|
158
|
+
"./super": {
|
|
159
|
+
"require": "./src/js/super/index.cjs",
|
|
160
|
+
"import": "./src/js/super/index.mjs"
|
|
161
|
+
},
|
|
162
|
+
"./super/components": {
|
|
163
|
+
"require": "./src/js/super/components/index.cjs",
|
|
164
|
+
"import": "./src/js/super/components/index.mjs"
|
|
109
165
|
},
|
|
110
|
-
"./
|
|
111
|
-
"./
|
|
112
|
-
"./gremlins": "./src/gremlins
|
|
113
|
-
"./gremlins/*": "./src/gremlins/*/index.cjs"
|
|
166
|
+
"./super/components/*": "./src/js/super/components/*/index.cjs",
|
|
167
|
+
"./super/gremlins": "./src/js/super/gremlins/index.cjs",
|
|
168
|
+
"./super/gremlins/*": "./src/js/super/gremlins/*/index.cjs"
|
|
114
169
|
}
|
|
115
170
|
}
|
|
@@ -11,7 +11,10 @@ const log = debug('@modernpoacher/gremlins/components/common/disabled')
|
|
|
11
11
|
log('`gremlins` is awake')
|
|
12
12
|
|
|
13
13
|
const {
|
|
14
|
-
default:
|
|
14
|
+
default: Disabled
|
|
15
15
|
} = require('./index.jsx')
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Exports only default
|
|
19
|
+
*/
|
|
20
|
+
module.exports = Disabled
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from '#gremlins/components/common/disabled'
|
|
@@ -11,7 +11,10 @@ const log = debug('@modernpoacher/gremlins/components/common/readonly')
|
|
|
11
11
|
log('`gremlins` is awake')
|
|
12
12
|
|
|
13
13
|
const {
|
|
14
|
-
default:
|
|
14
|
+
default: ReadOnly
|
|
15
15
|
} = require('./index.jsx')
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Exports only default
|
|
19
|
+
*/
|
|
20
|
+
module.exports = ReadOnly
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from '#gremlins/components/common/readonly'
|