@pareto-engineering/design-system 4.0.0-alpha.35 → 4.0.0-alpha.37
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/dist/cjs/f/common/InputWrapper/InputWrapper.js +74 -0
- package/dist/cjs/f/common/InputWrapper/index.js +13 -0
- package/dist/cjs/f/common/InputWrapper/styles.scss +13 -0
- package/dist/cjs/f/common/Label/Label.js +18 -4
- package/dist/cjs/f/common/Label/styles.scss +8 -2
- package/dist/cjs/f/common/index.js +8 -1
- package/dist/cjs/f/fields/Checkbox/Checkbox.js +40 -10
- package/dist/cjs/f/fields/Checkbox/styles.scss +6 -8
- package/dist/cjs/f/fields/ChoicesInput/ChoicesInput.js +42 -20
- package/dist/cjs/f/fields/ChoicesInput/common/Choice/Choice.js +1 -1
- package/dist/cjs/f/fields/ChoicesInput/styles.scss +50 -35
- package/dist/cjs/f/fields/QueryChoices/QueryChoices.js +26 -2
- package/dist/cjs/f/fields/QueryCombobox/QueryCombobox.js +35 -5
- package/dist/cjs/f/fields/QueryCombobox/common/Combobox/Combobox.js +41 -14
- package/dist/cjs/f/fields/QueryCombobox/common/MultipleCombobox/MultipleCombobox.js +33 -23
- package/dist/cjs/f/fields/QueryCombobox/styles.scss +58 -28
- package/dist/cjs/f/fields/QuerySelect/QuerySelect.js +17 -3
- package/dist/cjs/f/fields/RatingsInput/RatingsInput.js +41 -19
- package/dist/cjs/f/fields/RatingsInput/common/Rating/Rating.js +3 -3
- package/dist/cjs/f/fields/RatingsInput/styles.scss +6 -13
- package/dist/cjs/f/fields/SelectInput/SelectInput.js +45 -15
- package/dist/cjs/f/fields/SelectInput/styles.scss +41 -18
- package/dist/cjs/f/fields/TextInput/TextInput.js +38 -16
- package/dist/cjs/f/fields/TextInput/styles.scss +28 -22
- package/dist/cjs/f/fields/TextareaInput/TextareaInput.js +42 -21
- package/dist/cjs/f/fields/TextareaInput/styles.scss +42 -27
- package/dist/es/f/common/InputWrapper/InputWrapper.js +66 -0
- package/dist/es/f/common/InputWrapper/index.js +2 -0
- package/dist/es/f/common/InputWrapper/styles.scss +13 -0
- package/dist/es/f/common/Label/Label.js +18 -4
- package/dist/es/f/common/Label/styles.scss +8 -2
- package/dist/es/f/common/index.js +2 -1
- package/dist/es/f/fields/Checkbox/Checkbox.js +41 -11
- package/dist/es/f/fields/Checkbox/styles.scss +6 -8
- package/dist/es/f/fields/ChoicesInput/ChoicesInput.js +43 -21
- package/dist/es/f/fields/ChoicesInput/common/Choice/Choice.js +1 -1
- package/dist/es/f/fields/ChoicesInput/styles.scss +50 -35
- package/dist/es/f/fields/QueryChoices/QueryChoices.js +26 -2
- package/dist/es/f/fields/QueryCombobox/QueryCombobox.js +35 -5
- package/dist/es/f/fields/QueryCombobox/common/Combobox/Combobox.js +41 -14
- package/dist/es/f/fields/QueryCombobox/common/MultipleCombobox/MultipleCombobox.js +33 -23
- package/dist/es/f/fields/QueryCombobox/styles.scss +58 -28
- package/dist/es/f/fields/QuerySelect/QuerySelect.js +17 -3
- package/dist/es/f/fields/RatingsInput/RatingsInput.js +42 -20
- package/dist/es/f/fields/RatingsInput/common/Rating/Rating.js +3 -3
- package/dist/es/f/fields/RatingsInput/styles.scss +6 -13
- package/dist/es/f/fields/SelectInput/SelectInput.js +46 -16
- package/dist/es/f/fields/SelectInput/styles.scss +41 -18
- package/dist/es/f/fields/TextInput/TextInput.js +39 -17
- package/dist/es/f/fields/TextInput/styles.scss +28 -22
- package/dist/es/f/fields/TextareaInput/TextareaInput.js +43 -22
- package/dist/es/f/fields/TextareaInput/styles.scss +42 -27
- package/package.json +2 -2
- package/src/stories/f/Checkbox.stories.jsx +22 -7
- package/src/stories/f/ChoicesInput.stories.jsx +21 -7
- package/src/stories/f/QueryChoices.stories.jsx +20 -4
- package/src/stories/f/QueryCombobox.stories.jsx +25 -13
- package/src/stories/f/QuerySelect.stories.jsx +20 -5
- package/src/stories/f/RatingsInput.stories.jsx +16 -2
- package/src/stories/f/SelectInput.stories.jsx +20 -5
- package/src/stories/f/TextInput.stories.jsx +23 -9
- package/src/stories/f/TextareaInput.stories.jsx +16 -2
- package/src/ui/f/common/InputWrapper/InputWrapper.jsx +89 -0
- package/src/ui/f/common/InputWrapper/index.js +2 -0
- package/src/ui/f/common/InputWrapper/styles.scss +13 -0
- package/src/ui/f/common/Label/Label.jsx +18 -2
- package/src/ui/f/common/Label/styles.scss +8 -2
- package/src/ui/f/common/index.js +1 -0
- package/src/ui/f/fields/Checkbox/Checkbox.jsx +65 -27
- package/src/ui/f/fields/Checkbox/styles.scss +6 -8
- package/src/ui/f/fields/ChoicesInput/ChoicesInput.jsx +75 -47
- package/src/ui/f/fields/ChoicesInput/common/Choice/Choice.jsx +10 -3
- package/src/ui/f/fields/ChoicesInput/styles.scss +50 -35
- package/src/ui/f/fields/QueryChoices/QueryChoices.jsx +28 -0
- package/src/ui/f/fields/QueryCombobox/QueryCombobox.jsx +37 -2
- package/src/ui/f/fields/QueryCombobox/common/Combobox/Combobox.jsx +67 -38
- package/src/ui/f/fields/QueryCombobox/common/MultipleCombobox/MultipleCombobox.jsx +81 -66
- package/src/ui/f/fields/QueryCombobox/styles.scss +58 -28
- package/src/ui/f/fields/QuerySelect/QuerySelect.jsx +16 -1
- package/src/ui/f/fields/RatingsInput/RatingsInput.jsx +55 -28
- package/src/ui/f/fields/RatingsInput/common/Rating/Rating.jsx +3 -3
- package/src/ui/f/fields/RatingsInput/styles.scss +6 -13
- package/src/ui/f/fields/SelectInput/SelectInput.jsx +88 -49
- package/src/ui/f/fields/SelectInput/styles.scss +41 -18
- package/src/ui/f/fields/TextInput/TextInput.jsx +52 -29
- package/src/ui/f/fields/TextInput/styles.scss +28 -22
- package/src/ui/f/fields/TextareaInput/TextareaInput.jsx +65 -43
- package/src/ui/f/fields/TextareaInput/styles.scss +42 -27
- 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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
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 :'
|
|
214
|
+
color :'paragraph',
|
|
176
215
|
}
|
|
177
216
|
|
|
178
217
|
export default memo(SelectInput)
|
|
@@ -2,45 +2,67 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
@use "@pareto-engineering/bem";
|
|
5
|
-
@use "
|
|
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: .
|
|
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(--background-inputs);
|
|
16
|
+
$disabled-background: var(--background-inputs-30);
|
|
12
17
|
|
|
13
18
|
.#{bem.$base}.select-input {
|
|
14
|
-
|
|
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
|
-
|
|
22
|
-
background-color:
|
|
23
|
+
.select-wrapper {
|
|
24
|
+
background-color: $default-background;
|
|
25
|
+
border: $default-border;
|
|
23
26
|
border-radius: $default-input-border-radius;
|
|
24
|
-
|
|
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:
|
|
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:
|
|
65
|
+
background-color: $default-background;
|
|
44
66
|
background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAyMCAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDEuNUwxMCAxMC41TDEgMS41IiBzdHJva2U9IiM0QzRENTMiIHN0cm9rZS13aWR0aD0iMiIvPgo8L3N2Zz4=");
|
|
45
67
|
background-position: calc(100% - $default-spacing-size);
|
|
46
68
|
background-repeat: no-repeat;
|
|
@@ -48,12 +70,13 @@ $default-input-border-radius: var(--theme-default-input-border-radius);
|
|
|
48
70
|
padding-right: $default-spacing-size;
|
|
49
71
|
|
|
50
72
|
&.input {
|
|
51
|
-
|
|
73
|
+
border: none;
|
|
74
|
+
color: var(--y);
|
|
75
|
+
outline: none;
|
|
52
76
|
width: 100%;
|
|
53
77
|
|
|
54
78
|
&:disabled {
|
|
55
|
-
|
|
56
|
-
opacity: 35%;
|
|
79
|
+
opacity: 0%;
|
|
57
80
|
}
|
|
58
81
|
}
|
|
59
82
|
}
|
|
@@ -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
|
-
|
|
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
|
-
{
|
|
64
|
+
{label}
|
|
74
65
|
</FormLabel>
|
|
75
|
-
<
|
|
76
|
-
|
|
77
|
-
|
|
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
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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
|
|
207
|
+
symbol:PropTypes.string,
|
|
185
208
|
}
|
|
186
209
|
|
|
187
210
|
TextInput.defaultProps = {
|
|
188
211
|
type :'text',
|
|
189
|
-
color :'
|
|
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 "
|
|
4
|
+
@use "@pareto-engineering/styles/src/mixins";
|
|
5
|
+
@use "@pareto-engineering/styles/src/globals" as *;
|
|
5
6
|
|
|
6
|
-
$default-padding: .
|
|
7
|
+
$default-padding: .55em .75em;
|
|
7
8
|
$default-symbol-left: 1em;
|
|
8
9
|
$default-padding-with-symbol:
|
|
9
|
-
.
|
|
10
|
+
.55em
|
|
10
11
|
calc($default-symbol-left - 1em)
|
|
11
|
-
.
|
|
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(--background-inputs);
|
|
19
|
+
$disabled-background: var(--background-inputs-30);
|
|
15
20
|
|
|
16
21
|
.#{bem.$base}.text-input {
|
|
17
|
-
|
|
18
|
-
|
|
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(--
|
|
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:
|
|
43
|
+
background-color: $default-background;
|
|
44
|
+
border: $default-border;
|
|
44
45
|
border-radius: $default-input-border-radius;
|
|
45
|
-
color: var(--
|
|
46
|
-
|
|
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:
|
|
56
|
+
background-color: $disabled-background;
|
|
56
57
|
}
|
|
57
58
|
|
|
58
|
-
&:not(:disabled)
|
|
59
|
-
|
|
60
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
{
|
|
61
|
+
{label}
|
|
74
62
|
</FormLabel>
|
|
75
|
-
<
|
|
76
|
-
id={
|
|
77
|
-
className=
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
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
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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
|
-
*
|
|
141
|
+
* Color of the text
|
|
140
142
|
*/
|
|
141
|
-
|
|
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
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
203
|
+
rows :10,
|
|
204
|
+
disabled:false,
|
|
205
|
+
resize :'vertical',
|
|
206
|
+
color :'paragraph',
|
|
185
207
|
}
|
|
186
208
|
|
|
187
209
|
export default memo(TextareaInput)
|