@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,41 @@
1
+ /**
2
+ * ErrorMessage component
3
+ */
4
+ import React, { Component } from 'react'
5
+ import PropTypes from 'prop-types'
6
+
7
+ import TextContent from '@modernpoacher/cogs/components/common/text-content'
8
+
9
+ export default class ErrorMessage extends Component {
10
+ getClassName () {
11
+ return 'error-message'
12
+ }
13
+
14
+ /**
15
+ * Compare current and latest `props` for changes to `errorMessage`
16
+ *
17
+ * @param {{errorMessage?: string}} props Latest props
18
+ * @returns {boolean}
19
+ */
20
+ shouldComponentUpdate (props) {
21
+ return (props.errorMessage !== this.props.errorMessage)
22
+ }
23
+
24
+ render () {
25
+ const { errorMessage } = this.props
26
+
27
+ if (errorMessage) {
28
+ return (
29
+ <span className={this.getClassName()}>
30
+ <TextContent textContent={errorMessage} />
31
+ </span>
32
+ )
33
+ }
34
+
35
+ return null
36
+ }
37
+ }
38
+
39
+ ErrorMessage.propTypes = {
40
+ errorMessage: PropTypes.string
41
+ }
@@ -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/components/field')
10
+
11
+ log('`cogs` is awake')
12
+
13
+ /**
14
+ * Exports default, etc
15
+ */
16
+ module.exports = require('./index.jsx')
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Field component
3
+ */
4
+ import React, { Component } from 'react'
5
+ import PropTypes from 'prop-types'
6
+
7
+ function onChange () {
8
+ /* */
9
+ }
10
+
11
+ function onClick () {
12
+ /* */
13
+ }
14
+
15
+ export default class Field extends Component {
16
+ getClassName () {
17
+ return 'input'
18
+ }
19
+
20
+ shouldComponentUpdate (props) {
21
+ return (
22
+ (props.id !== this.props.id) ||
23
+ (props.required !== this.props.required) ||
24
+ (props.disabled !== this.props.disabled) ||
25
+ (props.readOnly !== this.props.readOnly) ||
26
+ (props.tabIndex !== this.props.tabIndex) ||
27
+ (props.accessKey !== this.props.accessKey) ||
28
+ (props.placeholder !== this.props.placeholder) ||
29
+ (props.onChange !== this.props.onChange)
30
+ )
31
+ }
32
+
33
+ render () {
34
+ const {
35
+ id,
36
+ required,
37
+ disabled,
38
+ readOnly,
39
+ tabIndex,
40
+ accessKey,
41
+ placeholder,
42
+ fieldRef
43
+ } = this.props
44
+
45
+ return (
46
+ <input
47
+ id={id}
48
+ required={required}
49
+ disabled={disabled}
50
+ readOnly={readOnly}
51
+ tabIndex={tabIndex}
52
+ accessKey={accessKey}
53
+ placeholder={placeholder}
54
+ className={this.getClassName()}
55
+ ref={fieldRef}
56
+ />
57
+ )
58
+ }
59
+ }
60
+
61
+ Field.propTypes = {
62
+ id: PropTypes.string,
63
+ name: PropTypes.string.isRequired,
64
+ required: PropTypes.bool,
65
+ disabled: PropTypes.bool,
66
+ readOnly: PropTypes.bool,
67
+ tabIndex: PropTypes.number,
68
+ accessKey: PropTypes.string,
69
+ placeholder: PropTypes.string,
70
+ onChange: PropTypes.func,
71
+ fieldRef: PropTypes.shape({
72
+ current: PropTypes.shape().isRequired
73
+ })
74
+ }
75
+
76
+ Field.defaultProps = {
77
+ required: false,
78
+ disabled: false,
79
+ readOnly: false,
80
+ onChange
81
+ }
82
+
83
+ /**
84
+ * ValueField component
85
+ */
86
+ export class ValueField extends Field {
87
+ shouldComponentUpdate (props) {
88
+ return (
89
+ super.shouldComponentUpdate(props) ||
90
+ (props.value !== this.props.value)
91
+ )
92
+ }
93
+
94
+ handleChange = ({ target: { value } }) => {
95
+ const { onChange } = this.props
96
+
97
+ onChange(value)
98
+ }
99
+ }
100
+
101
+ ValueField.propTypes = {
102
+ ...Field.propTypes,
103
+ value: PropTypes.string,
104
+ defaultValue: PropTypes.string
105
+ }
106
+
107
+ ValueField.defaultProps = {
108
+ ...Field.defaultProps
109
+ }
110
+
111
+ /**
112
+ * CheckField component
113
+ */
114
+ export class CheckField extends Field {
115
+ shouldComponentUpdate (props) {
116
+ return (
117
+ super.shouldComponentUpdate(props) ||
118
+ (props.checked !== this.props.checked) ||
119
+ (props.onClick !== this.props.onClick)
120
+ )
121
+ }
122
+
123
+ handleClick = ({ target: { checked } }) => {
124
+ const { onClick } = this.props
125
+
126
+ onClick(checked)
127
+ }
128
+
129
+ handleChange = ({ target: { checked } }) => {
130
+ const { onChange } = this.props
131
+
132
+ onChange(checked)
133
+ }
134
+ }
135
+
136
+ CheckField.propTypes = {
137
+ ...Field.propTypes,
138
+ checked: PropTypes.bool,
139
+ defaultChecked: PropTypes.bool,
140
+ onClick: PropTypes.func
141
+ }
142
+
143
+ CheckField.defaultProps = {
144
+ ...Field.defaultProps,
145
+ onClick
146
+ }
@@ -0,0 +1,20 @@
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/components/title')
10
+
11
+ log('`cogs` is awake')
12
+
13
+ const {
14
+ default: component
15
+ } = require('./index.jsx')
16
+
17
+ /**
18
+ * Exports only default
19
+ */
20
+ module.exports = component
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Title component
3
+ */
4
+ import React, { Component } from 'react'
5
+ import PropTypes from 'prop-types'
6
+
7
+ import TextContent from '@modernpoacher/cogs/components/common/text-content'
8
+ import Required from '@modernpoacher/cogs/components/common/required'
9
+ import Disabled from '@modernpoacher/cogs/components/common/disabled'
10
+ import ReadOnly from '@modernpoacher/cogs/components/common/readonly'
11
+
12
+ export default class Title extends Component {
13
+ isRequired () {
14
+ const { required } = this.props
15
+
16
+ return required
17
+ }
18
+
19
+ isDisabled () {
20
+ const { disabled } = this.props
21
+
22
+ return disabled
23
+ }
24
+
25
+ isReadOnly () {
26
+ const { readOnly } = this.props
27
+
28
+ return readOnly
29
+ }
30
+
31
+ getClassName () {
32
+ return 'title'
33
+ }
34
+
35
+ shouldComponentUpdate (props) {
36
+ return (
37
+ (props.id !== this.props.id) ||
38
+ (props.title !== this.props.title) ||
39
+ (props.required !== this.props.required) ||
40
+ (props.disabled !== this.props.disabled) ||
41
+ (props.readOnly !== this.props.readOnly)
42
+ )
43
+ }
44
+
45
+ renderIsRequired () {
46
+ if (this.isRequired()) {
47
+ return (
48
+ <Required />
49
+ )
50
+ }
51
+
52
+ return null
53
+ }
54
+
55
+ renderIsDisabled () {
56
+ if (this.isDisabled()) {
57
+ return (
58
+ <Disabled />
59
+ )
60
+ }
61
+
62
+ return null
63
+ }
64
+
65
+ renderIsReadOnly () {
66
+ if (this.isReadOnly()) {
67
+ return (
68
+ <ReadOnly />
69
+ )
70
+ }
71
+
72
+ return null
73
+ }
74
+
75
+ render () {
76
+ const { title } = this.props
77
+
78
+ if (title) {
79
+ const { id } = this.props
80
+
81
+ return (
82
+ <label htmlFor={id} className={this.getClassName()}>
83
+ <TextContent textContent={title} />
84
+ </label>
85
+ )
86
+ }
87
+
88
+ return null
89
+ }
90
+ }
91
+
92
+ Title.propTypes = {
93
+ id: PropTypes.string.isRequired,
94
+ title: PropTypes.string,
95
+ required: PropTypes.bool,
96
+ disabled: PropTypes.bool,
97
+ readOnly: PropTypes.bool,
98
+ children: PropTypes.oneOfType([
99
+ PropTypes.node,
100
+ PropTypes.arrayOf(
101
+ PropTypes.node
102
+ )
103
+ ])
104
+ }
105
+
106
+ Title.defaultProps = {
107
+ required: false,
108
+ disabled: false,
109
+ readOnly: false
110
+ }
package/src/index.cjs ADDED
@@ -0,0 +1,29 @@
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')
10
+
11
+ log('`cogs` is awake')
12
+
13
+ const CheckboxCog = require('./cogs/checkbox/index.cjs')
14
+ const EmailCog = require('./cogs/email/index.cjs')
15
+ const NumberCog = require('./cogs/number/index.cjs')
16
+ const PasswordCog = require('./cogs/password/index.cjs')
17
+ const RadioCog = require('./cogs/radio/index.cjs')
18
+ const SelectCog = require('./cogs/select/index.cjs')
19
+ const TextCog = require('./cogs/text/index.cjs')
20
+ const TextareaCog = require('./cogs/textarea/index.cjs')
21
+
22
+ module.exports.CheckboxCog = CheckboxCog
23
+ module.exports.EmailCog = EmailCog
24
+ module.exports.NumberCog = NumberCog
25
+ module.exports.PasswordCog = PasswordCog
26
+ module.exports.RadioCog = RadioCog
27
+ module.exports.SelectCog = SelectCog
28
+ module.exports.TextCog = TextCog
29
+ module.exports.TextareaCog = TextareaCog