@pareto-engineering/design-system 4.0.0-alpha.35 → 4.0.0-alpha.36

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 (89) hide show
  1. package/dist/cjs/f/common/InputWrapper/InputWrapper.js +74 -0
  2. package/dist/cjs/f/common/InputWrapper/index.js +13 -0
  3. package/dist/cjs/f/common/InputWrapper/styles.scss +13 -0
  4. package/dist/cjs/f/common/Label/Label.js +18 -4
  5. package/dist/cjs/f/common/Label/styles.scss +8 -2
  6. package/dist/cjs/f/common/index.js +8 -1
  7. package/dist/cjs/f/fields/Checkbox/Checkbox.js +40 -10
  8. package/dist/cjs/f/fields/Checkbox/styles.scss +6 -8
  9. package/dist/cjs/f/fields/ChoicesInput/ChoicesInput.js +42 -20
  10. package/dist/cjs/f/fields/ChoicesInput/common/Choice/Choice.js +1 -1
  11. package/dist/cjs/f/fields/ChoicesInput/styles.scss +50 -35
  12. package/dist/cjs/f/fields/QueryChoices/QueryChoices.js +26 -2
  13. package/dist/cjs/f/fields/QueryCombobox/QueryCombobox.js +35 -5
  14. package/dist/cjs/f/fields/QueryCombobox/common/Combobox/Combobox.js +41 -14
  15. package/dist/cjs/f/fields/QueryCombobox/common/MultipleCombobox/MultipleCombobox.js +33 -23
  16. package/dist/cjs/f/fields/QueryCombobox/styles.scss +58 -28
  17. package/dist/cjs/f/fields/QuerySelect/QuerySelect.js +17 -3
  18. package/dist/cjs/f/fields/RatingsInput/RatingsInput.js +41 -19
  19. package/dist/cjs/f/fields/RatingsInput/common/Rating/Rating.js +3 -3
  20. package/dist/cjs/f/fields/RatingsInput/styles.scss +6 -13
  21. package/dist/cjs/f/fields/SelectInput/SelectInput.js +45 -15
  22. package/dist/cjs/f/fields/SelectInput/styles.scss +40 -18
  23. package/dist/cjs/f/fields/TextInput/TextInput.js +38 -16
  24. package/dist/cjs/f/fields/TextInput/styles.scss +28 -22
  25. package/dist/cjs/f/fields/TextareaInput/TextareaInput.js +42 -21
  26. package/dist/cjs/f/fields/TextareaInput/styles.scss +42 -27
  27. package/dist/es/f/common/InputWrapper/InputWrapper.js +66 -0
  28. package/dist/es/f/common/InputWrapper/index.js +2 -0
  29. package/dist/es/f/common/InputWrapper/styles.scss +13 -0
  30. package/dist/es/f/common/Label/Label.js +18 -4
  31. package/dist/es/f/common/Label/styles.scss +8 -2
  32. package/dist/es/f/common/index.js +2 -1
  33. package/dist/es/f/fields/Checkbox/Checkbox.js +41 -11
  34. package/dist/es/f/fields/Checkbox/styles.scss +6 -8
  35. package/dist/es/f/fields/ChoicesInput/ChoicesInput.js +43 -21
  36. package/dist/es/f/fields/ChoicesInput/common/Choice/Choice.js +1 -1
  37. package/dist/es/f/fields/ChoicesInput/styles.scss +50 -35
  38. package/dist/es/f/fields/QueryChoices/QueryChoices.js +26 -2
  39. package/dist/es/f/fields/QueryCombobox/QueryCombobox.js +35 -5
  40. package/dist/es/f/fields/QueryCombobox/common/Combobox/Combobox.js +41 -14
  41. package/dist/es/f/fields/QueryCombobox/common/MultipleCombobox/MultipleCombobox.js +33 -23
  42. package/dist/es/f/fields/QueryCombobox/styles.scss +58 -28
  43. package/dist/es/f/fields/QuerySelect/QuerySelect.js +17 -3
  44. package/dist/es/f/fields/RatingsInput/RatingsInput.js +42 -20
  45. package/dist/es/f/fields/RatingsInput/common/Rating/Rating.js +3 -3
  46. package/dist/es/f/fields/RatingsInput/styles.scss +6 -13
  47. package/dist/es/f/fields/SelectInput/SelectInput.js +46 -16
  48. package/dist/es/f/fields/SelectInput/styles.scss +40 -18
  49. package/dist/es/f/fields/TextInput/TextInput.js +39 -17
  50. package/dist/es/f/fields/TextInput/styles.scss +28 -22
  51. package/dist/es/f/fields/TextareaInput/TextareaInput.js +43 -22
  52. package/dist/es/f/fields/TextareaInput/styles.scss +42 -27
  53. package/package.json +2 -2
  54. package/src/stories/f/Checkbox.stories.jsx +22 -7
  55. package/src/stories/f/ChoicesInput.stories.jsx +21 -7
  56. package/src/stories/f/QueryChoices.stories.jsx +20 -4
  57. package/src/stories/f/QueryCombobox.stories.jsx +25 -13
  58. package/src/stories/f/QuerySelect.stories.jsx +20 -5
  59. package/src/stories/f/RatingsInput.stories.jsx +16 -2
  60. package/src/stories/f/SelectInput.stories.jsx +20 -5
  61. package/src/stories/f/TextInput.stories.jsx +23 -9
  62. package/src/stories/f/TextareaInput.stories.jsx +16 -2
  63. package/src/ui/f/common/InputWrapper/InputWrapper.jsx +89 -0
  64. package/src/ui/f/common/InputWrapper/index.js +2 -0
  65. package/src/ui/f/common/InputWrapper/styles.scss +13 -0
  66. package/src/ui/f/common/Label/Label.jsx +18 -2
  67. package/src/ui/f/common/Label/styles.scss +8 -2
  68. package/src/ui/f/common/index.js +1 -0
  69. package/src/ui/f/fields/Checkbox/Checkbox.jsx +65 -27
  70. package/src/ui/f/fields/Checkbox/styles.scss +6 -8
  71. package/src/ui/f/fields/ChoicesInput/ChoicesInput.jsx +75 -47
  72. package/src/ui/f/fields/ChoicesInput/common/Choice/Choice.jsx +10 -3
  73. package/src/ui/f/fields/ChoicesInput/styles.scss +50 -35
  74. package/src/ui/f/fields/QueryChoices/QueryChoices.jsx +28 -0
  75. package/src/ui/f/fields/QueryCombobox/QueryCombobox.jsx +37 -2
  76. package/src/ui/f/fields/QueryCombobox/common/Combobox/Combobox.jsx +67 -38
  77. package/src/ui/f/fields/QueryCombobox/common/MultipleCombobox/MultipleCombobox.jsx +81 -66
  78. package/src/ui/f/fields/QueryCombobox/styles.scss +58 -28
  79. package/src/ui/f/fields/QuerySelect/QuerySelect.jsx +16 -1
  80. package/src/ui/f/fields/RatingsInput/RatingsInput.jsx +55 -28
  81. package/src/ui/f/fields/RatingsInput/common/Rating/Rating.jsx +3 -3
  82. package/src/ui/f/fields/RatingsInput/styles.scss +6 -13
  83. package/src/ui/f/fields/SelectInput/SelectInput.jsx +88 -49
  84. package/src/ui/f/fields/SelectInput/styles.scss +40 -18
  85. package/src/ui/f/fields/TextInput/TextInput.jsx +52 -29
  86. package/src/ui/f/fields/TextInput/styles.scss +28 -22
  87. package/src/ui/f/fields/TextareaInput/TextareaInput.jsx +65 -43
  88. package/src/ui/f/fields/TextareaInput/styles.scss +42 -27
  89. package/tests/__snapshots__/Storyshots.test.js.snap +4698 -3122
@@ -11,7 +11,7 @@ import styleNames from '@pareto-engineering/bem/exports'
11
11
 
12
12
  import { LoadingCircle } from 'ui/a'
13
13
 
14
- import { FormLabel, FormDescription } from '../../common'
14
+ import { FormLabel, FormDescription, InputWrapper } from '../../common'
15
15
 
16
16
  // Local Definitions
17
17
 
@@ -28,6 +28,7 @@ const SelectInput = ({
28
28
  style,
29
29
  name,
30
30
  label,
31
+ labelColor,
31
32
  color,
32
33
  options,
33
34
  validate,
@@ -36,6 +37,10 @@ const SelectInput = ({
36
37
  disabled,
37
38
  isLoading,
38
39
  autoComplete,
40
+ labelSpan,
41
+ desktopLabelSpan,
42
+ inputSpan,
43
+ desktopInputSpan,
39
44
  // ...otherProps
40
45
  }) => {
41
46
  useInsertionEffect(() => {
@@ -45,54 +50,63 @@ const SelectInput = ({
45
50
  const [field] = useField({ name, validate })
46
51
 
47
52
  return (
48
- <div
49
- id={id}
50
- className={[
51
-
52
- baseClassName,
53
-
54
- componentClassName,
55
- userClassName,
56
- `y-${color}`,
57
- ]
58
- .filter((e) => e)
59
- .join(' ')}
60
- style={style}
53
+ <>
54
+ <FormLabel
55
+ name={name}
56
+ color={labelColor}
57
+ optional={optional}
58
+ columnSpan={labelSpan}
59
+ desktopColumnSpan={desktopLabelSpan}
61
60
  // {...otherProps}
62
- >
63
- <FormLabel name={name} optional={optional}>{label}</FormLabel>
64
- <div className="select-wrapper with-faded-border">
65
- <select
66
- className="input"
67
- {...field}
68
- value={field.value || ''}
69
- id={name}
70
- disabled={disabled}
71
- autoComplete={autoComplete}
72
- >
73
- {
74
- options.map((option) => {
75
- // i.e if option is a string like "blah", return { value: "blah", label: "blah" }
76
- const newOption = typeof option === 'string' ? { value: option, label: option } : option
77
-
78
- return (
79
- <option
80
- key={newOption.value}
81
- value={newOption.value}
82
- disabled={newOption?.disabled || false}
83
- >
84
- {newOption.label}
85
- </option>
86
- )
87
- })
88
- }
89
- </select>
90
- {isLoading && (
91
- <LoadingCircle className="x-main2" />
92
- )}
93
- </div>
94
- <FormDescription className="v50 mt-v s-1" description={description} name={name} />
95
- </div>
61
+ >
62
+ {label}
63
+ </FormLabel>
64
+ <InputWrapper
65
+ id={id}
66
+ className={[
67
+ baseClassName,
68
+ componentClassName,
69
+ userClassName,
70
+ ]
71
+ .filter((e) => e)
72
+ .join(' ')}
73
+ style={style}
74
+ columnSpan={inputSpan}
75
+ desktopColumnSpan={desktopInputSpan}
76
+ >
77
+ <div className={`select-wrapper${disabled ? ' disabled' : ''}`}>
78
+ <select
79
+ className={`input y-${color}`}
80
+ {...field}
81
+ value={field.value || ''}
82
+ id={name}
83
+ disabled={disabled}
84
+ autoComplete={autoComplete}
85
+ >
86
+ {
87
+ options.map((option) => {
88
+ // i.e if option is a string like "blah", return { value: "blah", label: "blah" }
89
+ const newOption = typeof option === 'string' ? { value: option, label: option } : option
90
+
91
+ return (
92
+ <option
93
+ key={newOption.value}
94
+ value={newOption.value}
95
+ disabled={newOption?.disabled || false}
96
+ >
97
+ {newOption.label}
98
+ </option>
99
+ )
100
+ })
101
+ }
102
+ </select>
103
+ {isLoading && (
104
+ <LoadingCircle className="x-main" />
105
+ )}
106
+ </div>
107
+ <FormDescription className="s-1" description={description} name={name} />
108
+ </InputWrapper>
109
+ </>
96
110
  )
97
111
  }
98
112
 
@@ -155,6 +169,11 @@ SelectInput.propTypes = {
155
169
  */
156
170
  color:PropTypes.string,
157
171
 
172
+ /**
173
+ * The color of the select input label
174
+ */
175
+ labelColor:PropTypes.string,
176
+
158
177
  /*
159
178
  * Whether the query that is fetching the select options is still in flight
160
179
  */
@@ -164,6 +183,26 @@ SelectInput.propTypes = {
164
183
  */
165
184
  autoComplete:PropTypes.string,
166
185
 
186
+ /**
187
+ * The number of columns the label should span
188
+ */
189
+ labelSpan:PropTypes.number,
190
+
191
+ /**
192
+ * The number of columns the input should span
193
+ */
194
+ inputSpan:PropTypes.number,
195
+
196
+ /**
197
+ * The number of columns the label should span on desktop
198
+ */
199
+ desktopLabelSpan:PropTypes.number,
200
+
201
+ /**
202
+ * The number of columns the input should span on desktop
203
+ */
204
+ desktopInputSpan:PropTypes.number,
205
+
167
206
  /**
168
207
  * Whether the input is optional or not
169
208
  */
@@ -172,7 +211,7 @@ SelectInput.propTypes = {
172
211
 
173
212
  SelectInput.defaultProps = {
174
213
  disabled:false,
175
- color :'interactive',
214
+ color :'paragraph',
176
215
  }
177
216
 
178
217
  export default memo(SelectInput)
@@ -2,45 +2,66 @@
2
2
 
3
3
 
4
4
  @use "@pareto-engineering/bem";
5
- @use "../../../form.scss";
6
-
5
+ @use "@pareto-engineering/styles/src/mixins";
6
+ @use "@pareto-engineering/styles/src/globals" as *;
7
7
 
8
8
  $default-spacing-size: 1em;
9
- $default-padding: .5em;
9
+ $default-padding: .55em .75em;
10
10
  $default-bg-gradient: var(--background-far);
11
11
  $default-input-border-radius: var(--theme-default-input-border-radius);
12
+ $default-border: var(--theme-default-input-border);
13
+ $hover-border: var(--theme-hover-input-border);
14
+ $focus-border: var(--theme-focus-input-border);
15
+ $default-background: var(--theme-default-input-background);
16
+ $disabled-background: var(--theme-disabled-input-background);
12
17
 
13
18
  .#{bem.$base}.select-input {
14
- display: flex;
15
- flex-direction: column;
16
-
17
- .#{bem.$base}.label {
19
+ &.#{bem.$base}.label {
18
20
  margin-bottom: $default-spacing-size;
19
21
  }
20
22
 
21
- >.select-wrapper {
22
- background-color: var(--background-inputs);
23
+ .select-wrapper {
24
+ background-color: $default-background;
25
+ border: $default-border;
23
26
  border-radius: $default-input-border-radius;
24
- padding: $default-padding 0 $default-padding calc($default-padding * 1.5);
27
+ display: flex;
28
+ flex-direction: column;
29
+ padding: $default-padding;
30
+ padding-right: 0;
25
31
  position: relative;
26
32
 
33
+ &:not(.disabled) {
34
+ &:hover,
35
+ &:active {
36
+ border: $hover-border;
37
+ }
38
+
39
+ &:focus {
40
+ border: $focus-border;
41
+ }
42
+ }
43
+
44
+ &.disabled {
45
+ background: $disabled-background;
46
+ }
47
+
48
+ &::placeholder {
49
+ color: var(--metadata);
50
+ }
51
+
27
52
  &::after {
28
53
  border-radius: $default-input-border-radius;
29
54
  }
30
55
 
31
- &:not(:disabled):hover {
32
- box-shadow: var(--default-input-box-shadow);
33
- }
34
56
  >.#{bem.$base}.loading-circle {
35
57
  position: absolute;
36
- right: 0;
58
+ right: $default-spacing-size;
37
59
  top: 50%;
38
60
  transform: translateY(-50%);
39
61
  }
40
62
 
41
63
  select {
42
64
  appearance: none;
43
- background-color: transparent;
44
65
  background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAyMCAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDEuNUwxMCAxMC41TDEgMS41IiBzdHJva2U9IiM0QzRENTMiIHN0cm9rZS13aWR0aD0iMiIvPgo8L3N2Zz4=");
45
66
  background-position: calc(100% - $default-spacing-size);
46
67
  background-repeat: no-repeat;
@@ -48,12 +69,13 @@ $default-input-border-radius: var(--theme-default-input-border-radius);
48
69
  padding-right: $default-spacing-size;
49
70
 
50
71
  &.input {
51
- color: var(--paragraph);
72
+ border: none;
73
+ color: var(--y);
74
+ outline: none;
52
75
  width: 100%;
53
76
 
54
77
  &:disabled {
55
- appearance: none;
56
- opacity: 35%;
78
+ opacity: 0%;
57
79
  }
58
80
  }
59
81
  }
@@ -9,7 +9,7 @@ import styleNames from '@pareto-engineering/bem/exports'
9
9
 
10
10
  import { useField } from 'formik'
11
11
 
12
- import { FormLabel, FormDescription } from '../../common'
12
+ import { FormLabel, FormDescription, InputWrapper } from '../../common'
13
13
 
14
14
  // Local Definitions
15
15
 
@@ -30,12 +30,15 @@ const TextInput = ({
30
30
  color,
31
31
  labelColor,
32
32
  validate,
33
- oneInputLabel,
34
33
  description,
35
34
  disabled,
36
35
  placeholder,
37
36
  optional,
38
37
  autoComplete,
38
+ labelSpan,
39
+ desktopLabelSpan,
40
+ inputSpan,
41
+ desktopInputSpan,
39
42
  symbol,
40
43
  // ...otherProps
41
44
  }) => {
@@ -49,32 +52,33 @@ const TextInput = ({
49
52
  : {}
50
53
 
51
54
  return (
52
- <div
53
- id={id}
54
- className={[
55
- baseClassName,
56
- componentClassName,
57
- userClassName,
58
- `y-${color}`,
59
- ]
60
- .filter((e) => e)
61
- .join(' ')}
62
- style={style}
63
- // {...otherProps}
64
- >
55
+ <>
65
56
  <FormLabel
66
- className={[oneInputLabel ? 'md-s2 s0 v1 mb-v' : 'v50 mb-v']
67
- .filter((e) => e)
68
- .join(' ')}
69
57
  name={name}
70
58
  color={labelColor}
71
59
  optional={optional}
60
+ columnSpan={labelSpan}
61
+ desktopColumnSpan={desktopLabelSpan}
62
+ // {...otherProps}
72
63
  >
73
- { label }
64
+ {label}
74
65
  </FormLabel>
75
- <div
76
- className={`input-wrapper with-faded-border ${symbol ? 'has-symbol' : ''}`}
77
- style={symbolStyle}
66
+ <InputWrapper
67
+ id={id}
68
+ className={[
69
+ baseClassName,
70
+ componentClassName,
71
+ userClassName,
72
+ `y-${color} ${symbol ? 'has-symbol' : ''}`,
73
+ ]
74
+ .filter((e) => e)
75
+ .join(' ')}
76
+ style={{
77
+ ...symbolStyle,
78
+ ...style,
79
+ }}
80
+ columnSpan={inputSpan}
81
+ desktopColumnSpan={desktopInputSpan}
78
82
  >
79
83
  <input
80
84
  id={name}
@@ -85,11 +89,9 @@ const TextInput = ({
85
89
  autoComplete={autoComplete}
86
90
  {...field}
87
91
  />
88
- </div>
89
-
90
- <FormDescription className="v50 mt-v s-1" description={description} name={name} />
91
-
92
- </div>
92
+ <FormDescription className="s-1" description={description} name={name} />
93
+ </InputWrapper>
94
+ </>
93
95
  )
94
96
  }
95
97
 
@@ -178,15 +180,36 @@ TextInput.propTypes = {
178
180
  * `https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete`
179
181
  */
180
182
  autoComplete:PropTypes.string,
183
+
184
+ /**
185
+ * The number of columns the label should span
186
+ */
187
+ labelSpan:PropTypes.number,
188
+
189
+ /**
190
+ * The number of columns the input should span
191
+ */
192
+ inputSpan:PropTypes.number,
193
+
194
+ /**
195
+ * The number of columns the label should span on desktop
196
+ */
197
+ desktopLabelSpan:PropTypes.number,
198
+
199
+ /**
200
+ * The number of columns the input should span on desktop
201
+ */
202
+ desktopInputSpan:PropTypes.number,
203
+
181
204
  /**
182
205
  * A symbol to be set inside the input field
183
206
  */
184
- symbol :PropTypes.string,
207
+ symbol:PropTypes.string,
185
208
  }
186
209
 
187
210
  TextInput.defaultProps = {
188
211
  type :'text',
189
- color :'main',
212
+ color :'paragraph',
190
213
  disabled:false,
191
214
  }
192
215
 
@@ -1,32 +1,32 @@
1
1
  /* @pareto-engineering/generator-front 1.0.12 */
2
2
 
3
3
  @use "@pareto-engineering/bem";
4
- @use "../../../form.scss";
4
+ @use "@pareto-engineering/styles/src/mixins";
5
+ @use "@pareto-engineering/styles/src/globals" as *;
5
6
 
6
- $default-padding: .75em .75em .55em;
7
+ $default-padding: .55em .75em;
7
8
  $default-symbol-left: 1em;
8
9
  $default-padding-with-symbol:
9
- .75em
10
+ .55em
10
11
  calc($default-symbol-left - 1em)
11
- .75em
12
+ .55em
12
13
  calc($default-symbol-left + 1em);
13
14
  $default-input-border-radius: var(--theme-default-input-border-radius);
14
-
15
+ $default-border: var(--theme-default-input-border);
16
+ $hover-border: var(--theme-hover-input-border);
17
+ $focus-border: var(--theme-focus-input-border);
18
+ $default-background: var(--theme-default-input-background);
19
+ $disabled-background: var(--theme-disabled-input-background);
15
20
 
16
21
  .#{bem.$base}.text-input {
17
- display: flex;
18
- flex-direction: column;
19
-
20
- >.input-wrapper {
22
+ &.#{bem.$base}.input-wrapper {
23
+ display: flex;
24
+ flex-direction: column;
21
25
  position: relative;
22
26
 
23
- &::after {
24
- border-radius: $default-input-border-radius;
25
- }
26
-
27
27
  &.has-symbol {
28
28
  &::before {
29
- color: var(--interactive);
29
+ color: var(--y);
30
30
  content: var(--symbol);
31
31
  left: $default-symbol-left;
32
32
  position: absolute;
@@ -40,10 +40,11 @@ $default-input-border-radius: var(--theme-default-input-border-radius);
40
40
  }
41
41
 
42
42
  > input {
43
- background-color: var(--background-inputs);
43
+ background-color: $default-background;
44
+ border: $default-border;
44
45
  border-radius: $default-input-border-radius;
45
- color: var(--paragraph);
46
- height: 100%;
46
+ color: var(--y);
47
+ outline: none;
47
48
  padding: $default-padding;
48
49
  width: 100%;
49
50
 
@@ -52,14 +53,19 @@ $default-input-border-radius: var(--theme-default-input-border-radius);
52
53
  }
53
54
 
54
55
  &:disabled {
55
- background-color: var(--hard-x);
56
+ background-color: $disabled-background;
56
57
  }
57
58
 
58
- &:not(:disabled):hover {
59
- border-radius: $default-input-border-radius;
60
- box-shadow: var(--theme-default-input-box-shadow);
59
+ &:not(:disabled) {
60
+ &:hover,
61
+ &:active {
62
+ border: $hover-border;
63
+ }
64
+
65
+ &:focus {
66
+ border: $focus-border;
67
+ }
61
68
  }
62
69
  }
63
70
  }
64
71
  }
65
-
@@ -11,7 +11,7 @@ import { useField } from 'formik'
11
11
 
12
12
  // Local Definitions
13
13
 
14
- import { FormLabel, FormDescription } from '../../common'
14
+ import { FormLabel, FormDescription, InputWrapper } from '../../common'
15
15
 
16
16
  const baseClassName = styleNames.base
17
17
 
@@ -27,17 +27,19 @@ const TextareaInput = ({
27
27
  name,
28
28
  label,
29
29
  validate,
30
- labelAsDescription,
31
- textAreaId,
30
+ color,
32
31
  rows,
33
32
  optional,
34
- backgroundColor,
35
33
  labelColor,
36
34
  description,
37
35
  disabled,
38
36
  placeholder,
39
37
  autoComplete,
40
38
  resize,
39
+ labelSpan,
40
+ desktopLabelSpan,
41
+ inputSpan,
42
+ desktopInputSpan,
41
43
  // ...otherProps
42
44
  }) => {
43
45
  useInsertionEffect(() => {
@@ -47,46 +49,46 @@ const TextareaInput = ({
47
49
  const [field] = useField({ name, validate })
48
50
 
49
51
  return (
50
- <div
51
- id={id}
52
- className={[
53
-
54
- baseClassName,
55
-
56
- componentClassName,
57
- userClassName,
58
- `y-${backgroundColor}`,
59
- ]
60
- .filter((e) => e)
61
- .join(' ')}
62
- style={style}
63
- // {...otherProps}
64
- >
52
+ <>
65
53
  <FormLabel
66
- className={[labelAsDescription ? 'md-s2 s0 v1 mb-v' : 'v50 mb-v']
67
- .filter((e) => e)
68
- .join(' ')}
69
54
  name={name}
70
55
  color={labelColor}
71
56
  optional={optional}
57
+ columnSpan={labelSpan}
58
+ desktopColumnSpan={desktopLabelSpan}
59
+ // {...otherProps}
72
60
  >
73
- { label }
61
+ {label}
74
62
  </FormLabel>
75
- <textarea
76
- id={textAreaId}
77
- className="textarea"
78
- {...field}
79
- style={{ resize }}
80
- placeholder={placeholder}
81
- rows={rows}
82
- disabled={disabled}
83
- autoComplete={autoComplete}
63
+ <InputWrapper
64
+ id={id}
65
+ className={[
66
+ baseClassName,
67
+ componentClassName,
68
+ userClassName,
69
+ `y-${color}`,
70
+ ]
71
+ .filter((e) => e)
72
+ .join(' ')}
73
+ style={style}
74
+ columnSpan={inputSpan}
75
+ desktopColumnSpan={desktopInputSpan}
84
76
  >
85
- {/* It was a dark and stormy night... */}
86
- </textarea>
87
-
88
- <FormDescription className="v50 mt-v s-1" description={description} name={name} />
89
- </div>
77
+ <textarea
78
+ id={name}
79
+ className="textarea"
80
+ {...field}
81
+ style={{ resize }}
82
+ placeholder={placeholder}
83
+ rows={rows}
84
+ disabled={disabled}
85
+ autoComplete={autoComplete}
86
+ >
87
+ {/* It was a dark and stormy night... */}
88
+ </textarea>
89
+ <FormDescription className="s-1" description={description} name={name} />
90
+ </InputWrapper>
91
+ </>
90
92
  )
91
93
  }
92
94
 
@@ -136,9 +138,9 @@ TextareaInput.propTypes = {
136
138
  rows:PropTypes.number,
137
139
 
138
140
  /**
139
- * Text area background color
141
+ * Color of the text
140
142
  */
141
- backgroundColor:PropTypes.string,
143
+ color:PropTypes.string,
142
144
 
143
145
  /**
144
146
  * Label base color
@@ -175,13 +177,33 @@ TextareaInput.propTypes = {
175
177
  * Whether the input is optional or not
176
178
  */
177
179
  optional:PropTypes.bool,
180
+
181
+ /**
182
+ * The number of columns the label should span
183
+ */
184
+ labelSpan:PropTypes.number,
185
+
186
+ /**
187
+ * The number of columns the input should span
188
+ */
189
+ inputSpan:PropTypes.number,
190
+
191
+ /**
192
+ * The number of columns the label should span on desktop
193
+ */
194
+ desktopLabelSpan:PropTypes.number,
195
+
196
+ /**
197
+ * The number of columns the input should span on desktop
198
+ */
199
+ desktopInputSpan:PropTypes.number,
178
200
  }
179
201
 
180
202
  TextareaInput.defaultProps = {
181
- rows :10,
182
- backgroundColor:'background-inputs',
183
- disabled :false,
184
- resize :'vertical',
203
+ rows :10,
204
+ disabled:false,
205
+ resize :'vertical',
206
+ color :'paragraph',
185
207
  }
186
208
 
187
209
  export default memo(TextareaInput)