@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.
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 +41 -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 +41 -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 +41 -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 { Choice } from './common'
13
13
 
14
- import { FormDescription, FormLabel } from '../../common'
14
+ import { FormDescription, FormLabel, InputWrapper } from '../../common'
15
15
 
16
16
  const baseClassName = styleNames.base
17
17
 
@@ -28,14 +28,17 @@ const ChoicesInput = ({
28
28
  validate,
29
29
  options,
30
30
  multiple,
31
- gridColumnsMobile,
32
- gridColumnsDesktop,
33
31
  color,
34
32
  label,
33
+ labelColor,
35
34
  optional,
36
35
  disabled,
37
36
  description,
38
37
  spaceBetween,
38
+ labelSpan,
39
+ desktopLabelSpan,
40
+ inputSpan,
41
+ desktopInputSpan,
39
42
  ...otherProps
40
43
  }) => {
41
44
  useInsertionEffect(() => {
@@ -43,48 +46,50 @@ const ChoicesInput = ({
43
46
  }, [])
44
47
 
45
48
  return (
46
- <div
47
- id={id}
48
- className={[
49
-
50
- baseClassName,
51
-
52
- componentClassName,
53
- userClassName,
54
- multiple && 'multiple',
55
- color && `x-${color}`,
56
- ]
57
- .filter((e) => e)
58
- .join(' ')}
59
- style={{
60
- '--grid-columns-desktop':gridColumnsDesktop,
61
- '--grid-columns-mobile' :gridColumnsMobile,
62
- ...style,
63
- }}
64
- // {...otherProps}
65
- >
49
+ <>
66
50
  {label && (
67
- <FormLabel as="p" optional={optional}>
68
- {label}
69
- </FormLabel>
51
+ <FormLabel
52
+ name={name}
53
+ color={labelColor}
54
+ optional={optional}
55
+ columnSpan={labelSpan}
56
+ desktopColumnSpan={desktopLabelSpan}
57
+ // {...otherProps}
58
+ >
59
+ {label}
60
+ </FormLabel>
70
61
  )}
71
- <div className={['choices', spaceBetween && 'space-between'].filter(Boolean).join(' ')}>
72
- { options.map((choice) => (
73
- <Choice
74
- labelClassName="with-faded-border"
75
- key={choice.value}
76
- name={name}
77
- id={`${name}-${choice.value}`}
78
- multiple={multiple}
79
- validate={validate}
80
- disabled={disabled}
81
- {...otherProps}
82
- {...choice}
83
- />
84
- ))}
85
- </div>
86
- <FormDescription className="v50 mt-v s-1" description={description} name={name} />
87
- </div>
62
+ <InputWrapper
63
+ id={id}
64
+ className={[
65
+ baseClassName,
66
+ componentClassName,
67
+ userClassName,
68
+ ]
69
+ .filter((e) => e)
70
+ .join(' ')}
71
+ style={style}
72
+ columnSpan={inputSpan}
73
+ desktopColumnSpan={desktopInputSpan}
74
+ >
75
+ <div className={['choices', spaceBetween && 'space-between'].filter(Boolean).join(' ')}>
76
+ { options.map((choice) => (
77
+ <Choice
78
+ className={`x-${color}`}
79
+ key={choice.value}
80
+ name={name}
81
+ id={`${name}-${choice.value}`}
82
+ multiple={multiple}
83
+ validate={validate}
84
+ disabled={disabled}
85
+ {...otherProps}
86
+ {...choice}
87
+ />
88
+ ))}
89
+ </div>
90
+ <FormDescription className="s-1" description={description} name={name} />
91
+ </InputWrapper>
92
+ </>
88
93
  )
89
94
  }
90
95
 
@@ -156,13 +161,36 @@ ChoicesInput.propTypes = {
156
161
  * The select input description
157
162
  */
158
163
  description:PropTypes.string,
164
+
165
+ /**
166
+ * The number of columns the label should span
167
+ */
168
+ labelSpan:PropTypes.number,
169
+
170
+ /**
171
+ * The number of columns the input should span
172
+ */
173
+ inputSpan:PropTypes.number,
174
+
175
+ /**
176
+ * The number of columns the label should span on desktop
177
+ */
178
+ desktopLabelSpan:PropTypes.number,
179
+
180
+ /**
181
+ * The number of columns the input should span on desktop
182
+ */
183
+ desktopInputSpan:PropTypes.number,
184
+
185
+ /**
186
+ * The color of the label
187
+ */
188
+ labelColor:PropTypes.string,
159
189
  }
160
190
 
161
191
  ChoicesInput.defaultProps = {
162
- gridColumnsMobile :2,
163
- gridColumnsDesktop:3,
164
- color :'interactive',
165
- disabled :false,
192
+ color :'interactive',
193
+ disabled:false,
166
194
  }
167
195
 
168
196
  export default memo(ChoicesInput)
@@ -40,9 +40,7 @@ const Choice = ({
40
40
  return (
41
41
  <div
42
42
  className={[
43
-
44
43
  baseClassName,
45
-
46
44
  componentClassName,
47
45
  userClassName,
48
46
  ]
@@ -58,7 +56,16 @@ const Choice = ({
58
56
  value={value}
59
57
  disabled={disabled}
60
58
  />
61
- <label htmlFor={id} className={labelClassName} style={labelStyle}>
59
+ <label
60
+ htmlFor={id}
61
+ className={[
62
+ labelClassName,
63
+ disabled && 'disabled',
64
+ ]
65
+ .filter((e) => e)
66
+ .join(' ')}
67
+ style={labelStyle}
68
+ >
62
69
  { label }
63
70
  </label>
64
71
  </div>
@@ -1,5 +1,6 @@
1
1
  /* @pareto-engineering/generator-front 1.0.12 */
2
2
  /* stylelint-disable selector-max-compound-selectors -- exception */
3
+ /* stylelint-disable max-nesting-depth -- exception */
3
4
 
4
5
  @use "@pareto-engineering/bem";
5
6
  @use "@pareto-engineering/styles/src/mixins";
@@ -9,52 +10,66 @@ $default-flex-separator:calc(1em / 2) calc(.75em / 2);
9
10
  $default-transition:var(--theme-default-transition);
10
11
  $default-label-padding: .3em 1em calc(2em - .3em);
11
12
  $default-label-height: .5em;
13
+ $default-input-border-radius: var(--theme-default-input-border-radius);
14
+ $default-border: var(--theme-default-input-border);
15
+ $hover-border: var(--theme-hover-input-border);
16
+ $focus-border: var(--theme-focus-input-border);
17
+ $default-background: var(--background-inputs);
18
+ $disabled-background: var(--background-inputs-30);
12
19
 
13
20
  .#{bem.$base}.choices-input {
14
- >.choices {
21
+ &.#{bem.$base}.input-wrapper {
15
22
  display: flex;
16
- flex-wrap: wrap;
17
- gap: $default-flex-separator;
23
+ flex-direction: column;
18
24
 
19
- &.space-between {
20
- justify-content: space-between;
21
- }
22
-
23
- >.choice {
25
+ > .choices {
24
26
  display: flex;
27
+ flex-wrap: wrap;
28
+ gap: $default-flex-separator;
25
29
 
26
- input {
27
- opacity: 0;
28
- position: absolute;
29
- visibility: none;
30
- z-index: -1;
30
+ &.space-between {
31
+ justify-content: space-between;
31
32
  }
32
33
 
33
- input:disabled + label {
34
- background-color: var(--hard-x);
35
- }
34
+ >.choice {
35
+ display: flex;
36
36
 
37
- > label {
38
- background-color: var(--background-inputs);
39
- border-radius: var(--theme-default-border-radius);
40
- color: var(--paragraph);
41
- cursor: pointer;
42
- display: block;
43
- height: $default-label-height;
44
- max-width: 100%;
45
- padding: $default-label-padding;
46
- position: relative;
47
- transition: $default-transition;
48
- white-space: nowrap;
49
-
50
- &:hover {
51
- box-shadow: var(--theme-default-input-box-shadow);
37
+ input {
38
+ opacity: 0;
39
+ position: absolute;
40
+ visibility: none;
41
+ z-index: -1;
52
42
  }
53
- }
54
43
 
55
- input:checked + label {
56
- background: var(--x);
57
- color: var(--on-x);
44
+ input:disabled + label {
45
+ background-color: $disabled-background;
46
+ }
47
+
48
+ > label {
49
+ background-color: $default-background;
50
+ border: $default-border;
51
+ border-radius: $default-input-border-radius;
52
+ color: var(--paragraph);
53
+ cursor: pointer;
54
+ display: block;
55
+ height: $default-label-height;
56
+ max-width: 100%;
57
+ padding: $default-label-padding;
58
+ position: relative;
59
+ transition: $default-transition;
60
+ white-space: nowrap;
61
+
62
+ &:not(.disabled) {
63
+ &:hover {
64
+ border: $hover-border;
65
+ }
66
+ }
67
+ }
68
+
69
+ input:checked + label {
70
+ background: var(--x);
71
+ color: var(--on-x);
72
+ }
58
73
  }
59
74
  }
60
75
  }
@@ -22,6 +22,10 @@ const QueryChoices = ({
22
22
  validate,
23
23
  loadingOption,
24
24
  extraVariables,
25
+ labelSpan,
26
+ desktopLabelSpan,
27
+ inputSpan,
28
+ desktopInputSpan,
25
29
  ...otherProps
26
30
  }) => {
27
31
  const [, , helpers] = useField({ name, validate })
@@ -84,6 +88,10 @@ const QueryChoices = ({
84
88
  name={name}
85
89
  validate={validate}
86
90
  options={options}
91
+ labelSpan={labelSpan}
92
+ desktopLabelSpan={desktopLabelSpan}
93
+ inputSpan={inputSpan}
94
+ desktopInputSpan={desktopInputSpan}
87
95
  {...otherProps}
88
96
  />
89
97
  )
@@ -140,6 +148,26 @@ QueryChoices.propTypes = {
140
148
  * select options.
141
149
  */
142
150
  extraVariables:PropTypes.objectOf(PropTypes.string),
151
+
152
+ /**
153
+ * The number of columns the label should span
154
+ */
155
+ labelSpan:PropTypes.number,
156
+
157
+ /**
158
+ * The number of columns the input should span
159
+ */
160
+ inputSpan:PropTypes.number,
161
+
162
+ /**
163
+ * The number of columns the label should span on desktop
164
+ */
165
+ desktopLabelSpan:PropTypes.number,
166
+
167
+ /**
168
+ * The number of columns the input should span on desktop
169
+ */
170
+ desktopInputSpan:PropTypes.number,
143
171
  }
144
172
 
145
173
  QueryChoices.defaultProps = {
@@ -24,6 +24,7 @@ const QueryCombobox = ({
24
24
  multiple,
25
25
  name,
26
26
  label,
27
+ labelColor,
27
28
  color,
28
29
  optional,
29
30
  description,
@@ -35,6 +36,10 @@ const QueryCombobox = ({
35
36
  minLength,
36
37
  transformSearch,
37
38
  validate,
39
+ labelSpan,
40
+ desktopLabelSpan,
41
+ inputSpan,
42
+ desktopInputSpan,
38
43
  // ...otherProps
39
44
  }) => {
40
45
  useInsertionEffect(() => {
@@ -101,6 +106,7 @@ const QueryCombobox = ({
101
106
  disabled,
102
107
  name,
103
108
  label,
109
+ labelColor,
104
110
  optional,
105
111
  description,
106
112
  setValue,
@@ -110,6 +116,10 @@ const QueryCombobox = ({
110
116
  className,
111
117
  minLength,
112
118
  transformSearch,
119
+ labelSpan,
120
+ desktopLabelSpan,
121
+ inputSpan,
122
+ desktopInputSpan,
113
123
  }
114
124
 
115
125
  const Input = multiple ? MultipleCombobox : Combobox
@@ -143,6 +153,11 @@ QueryCombobox.propTypes = {
143
153
  */
144
154
  label:PropTypes.string,
145
155
 
156
+ /**
157
+ * The label color of the custom select input
158
+ */
159
+ labelColor:PropTypes.string,
160
+
146
161
  /**
147
162
  * The custom select input description
148
163
  */
@@ -154,7 +169,7 @@ QueryCombobox.propTypes = {
154
169
  disabled:PropTypes.bool,
155
170
 
156
171
  /**
157
- * The base color of the custom select input
172
+ * The base color of the tiles
158
173
  */
159
174
  color:PropTypes.string,
160
175
 
@@ -217,6 +232,26 @@ QueryCombobox.propTypes = {
217
232
  * Whether the input is optional or not
218
233
  */
219
234
  optional:PropTypes.bool,
235
+
236
+ /**
237
+ * The number of columns the label should span
238
+ */
239
+ labelSpan:PropTypes.number,
240
+
241
+ /**
242
+ * The number of columns the input should span
243
+ */
244
+ inputSpan:PropTypes.number,
245
+
246
+ /**
247
+ * The number of columns the label should span on desktop
248
+ */
249
+ desktopLabelSpan:PropTypes.number,
250
+
251
+ /**
252
+ * The number of columns the input should span on desktop
253
+ */
254
+ desktopInputSpan:PropTypes.number,
220
255
  }
221
256
 
222
257
  QueryCombobox.defaultProps = {
@@ -225,7 +260,7 @@ QueryCombobox.defaultProps = {
225
260
  getLabel:(node) => node.name,
226
261
  },
227
262
  multiple :false,
228
- color :'background-near',
263
+ color :'interactive',
229
264
  searchVariable :'search',
230
265
  transformSearch:(search) => search,
231
266
  minLength :2,
@@ -15,6 +15,8 @@ import { Popover, LoadingCircle } from 'ui/a'
15
15
 
16
16
  import { Button } from 'ui/b'
17
17
 
18
+ import { InputWrapper } from '../../../../common'
19
+
18
20
  // Local Definitions
19
21
 
20
22
  import { Menu } from '../Menu'
@@ -31,6 +33,7 @@ const Combobox = ({
31
33
  className:userClassName,
32
34
  style,
33
35
  label,
36
+ labelColor,
34
37
  name,
35
38
  options:items,
36
39
  getOptions,
@@ -43,6 +46,10 @@ const Combobox = ({
43
46
  transformSearch,
44
47
  disabled,
45
48
  optional,
49
+ labelSpan,
50
+ desktopLabelSpan,
51
+ inputSpan,
52
+ desktopInputSpan,
46
53
  // ...otherProps
47
54
  }) => {
48
55
  const {
@@ -89,58 +96,60 @@ const Combobox = ({
89
96
  const resetInputValue = () => setInputValue('')
90
97
 
91
98
  return (
92
- <div
93
- id={id}
94
- className={[
95
-
96
- baseClassName,
97
-
98
- componentClassName,
99
- userClassName,
100
- `y-${color}`,
101
- ]
102
- .filter((e) => e)
103
- .join(' ')}
104
- style={style}
105
- ref={parentRef}
106
- >
99
+ <>
107
100
  <FormLabel
108
101
  {...getLabelProps()}
109
102
  name={name}
110
103
  optional={optional}
104
+ color={labelColor}
105
+ columnSpan={labelSpan}
106
+ desktopColumnSpan={desktopLabelSpan}
111
107
  >
112
108
  {label}
113
109
  </FormLabel>
114
110
 
115
- <div {...getComboboxProps()} className="input-wrapper">
111
+ <InputWrapper
112
+ id={id}
113
+ className={[
114
+ baseClassName,
115
+ componentClassName,
116
+ userClassName,
117
+ ]
118
+ .filter((e) => e)
119
+ .join(' ')}
120
+ style={style}
121
+ ref={parentRef}
122
+ {...getComboboxProps()}
123
+ columnSpan={inputSpan}
124
+ desktopColumnSpan={desktopInputSpan}
125
+ >
116
126
  <input {...getInputProps()} className="input" disabled={disabled} />
117
127
  {isFetching && (
118
- <LoadingCircle className="x-main" />
128
+ <LoadingCircle className="x-main" />
119
129
  )}
120
130
  {inputValue.length > minLength && !isFetching && (
121
- <Button isSimple isCompact color="heading" onClick={resetInputValue}>
122
- <span className="icon">
123
- Y
124
- </span>
125
- </Button>
131
+ <Button isSimple isCompact color="heading" onClick={resetInputValue}>
132
+ <span className="icon">
133
+ Y
134
+ </span>
135
+ </Button>
126
136
  )}
127
- </div>
128
-
129
- <Popover
130
- isOpen={isOpen}
131
- parentRef={parentRef}
132
- >
133
- <Menu
137
+ <FormDescription className="s-1" description={description} name={name} />
138
+ <Popover
134
139
  isOpen={isOpen}
135
- getItemProps={getItemProps}
136
- highlightedIndex={highlightedIndex}
137
- items={items}
138
- {...getMenuProps()}
139
- />
140
- </Popover>
141
-
142
- <FormDescription className="v50 mt-v s-1" description={description} name={name} />
143
- </div>
140
+ parentRef={parentRef}
141
+ >
142
+ <Menu
143
+ className={`y-${color}`}
144
+ isOpen={isOpen}
145
+ getItemProps={getItemProps}
146
+ highlightedIndex={highlightedIndex}
147
+ items={items}
148
+ {...getMenuProps()}
149
+ />
150
+ </Popover>
151
+ </InputWrapper>
152
+ </>
144
153
  )
145
154
  }
146
155
 
@@ -228,6 +237,26 @@ Combobox.propTypes = {
228
237
  */
229
238
  disabled:PropTypes.bool,
230
239
 
240
+ /**
241
+ * The number of columns the label should span
242
+ */
243
+ labelSpan:PropTypes.number,
244
+
245
+ /**
246
+ * The number of columns the input should span
247
+ */
248
+ inputSpan:PropTypes.number,
249
+
250
+ /**
251
+ * The number of columns the label should span on desktop
252
+ */
253
+ desktopLabelSpan:PropTypes.number,
254
+
255
+ /**
256
+ * The number of columns the input should span on desktop
257
+ */
258
+ desktopInputSpan:PropTypes.number,
259
+
231
260
  /**
232
261
  * Whether the input is optional or not
233
262
  */