@toptal/picasso-select 1.0.30 → 2.0.0

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 (83) hide show
  1. package/dist-package/src/NativeSelect/NativeSelect.d.ts.map +1 -1
  2. package/dist-package/src/NativeSelect/NativeSelect.js +18 -23
  3. package/dist-package/src/NativeSelect/NativeSelect.js.map +1 -1
  4. package/dist-package/src/NativeSelect/NativeSelectInput.d.ts +9 -0
  5. package/dist-package/src/NativeSelect/NativeSelectInput.d.ts.map +1 -0
  6. package/dist-package/src/NativeSelect/NativeSelectInput.js +27 -0
  7. package/dist-package/src/NativeSelect/NativeSelectInput.js.map +1 -0
  8. package/dist-package/src/NonNativeSelect/NonNativeSelect.d.ts.map +1 -1
  9. package/dist-package/src/NonNativeSelect/NonNativeSelect.js +12 -18
  10. package/dist-package/src/NonNativeSelect/NonNativeSelect.js.map +1 -1
  11. package/dist-package/src/NonNativeSelectLimitFooter/NonNativeSelectLimitFooter.d.ts.map +1 -1
  12. package/dist-package/src/NonNativeSelectLimitFooter/NonNativeSelectLimitFooter.js +1 -5
  13. package/dist-package/src/NonNativeSelectLimitFooter/NonNativeSelectLimitFooter.js.map +1 -1
  14. package/dist-package/src/NonNativeSelectOptions/NonNativeSelectOptions.d.ts.map +1 -1
  15. package/dist-package/src/NonNativeSelectOptions/NonNativeSelectOptions.js +1 -5
  16. package/dist-package/src/NonNativeSelectOptions/NonNativeSelectOptions.js.map +1 -1
  17. package/dist-package/src/ScrollMenu/ScrollMenu.d.ts.map +1 -1
  18. package/dist-package/src/ScrollMenu/ScrollMenu.js +3 -9
  19. package/dist-package/src/ScrollMenu/ScrollMenu.js.map +1 -1
  20. package/dist-package/src/SelectCaret/SelectCaret.d.ts.map +1 -1
  21. package/dist-package/src/SelectCaret/SelectCaret.js +11 -8
  22. package/dist-package/src/SelectCaret/SelectCaret.js.map +1 -1
  23. package/dist-package/src/SelectOptions/SelectOptions.d.ts.map +1 -1
  24. package/dist-package/src/SelectOptions/SelectOptions.js +2 -11
  25. package/dist-package/src/SelectOptions/SelectOptions.js.map +1 -1
  26. package/package.json +14 -12
  27. package/src/NativeSelect/NativeSelect.tsx +54 -56
  28. package/src/NativeSelect/NativeSelectInput.tsx +51 -0
  29. package/src/NativeSelect/__snapshots__/test.tsx.snap +10 -36
  30. package/src/NonNativeSelect/NonNativeSelect.tsx +21 -23
  31. package/src/NonNativeSelect/__snapshots__/test.tsx.snap +45 -62
  32. package/src/NonNativeSelectLimitFooter/NonNativeSelectLimitFooter.tsx +1 -9
  33. package/src/NonNativeSelectLimitFooter/__snapshots__/test.tsx.snap +5 -5
  34. package/src/NonNativeSelectLoader/__snapshots__/test.tsx.snap +11 -9
  35. package/src/NonNativeSelectOption/__snapshots__/test.tsx.snap +14 -16
  36. package/src/NonNativeSelectOptions/NonNativeSelectOptions.tsx +1 -7
  37. package/src/NonNativeSelectOptions/__snapshots__/test.tsx.snap +51 -51
  38. package/src/ScrollMenu/ScrollMenu.tsx +8 -12
  39. package/src/ScrollMenu/__snapshots__/test.tsx.snap +17 -17
  40. package/src/Select/story/index.jsx +1 -1
  41. package/src/SelectCaret/SelectCaret.tsx +10 -12
  42. package/src/SelectCaret/__snapshots__/test.tsx.snap +2 -2
  43. package/src/SelectOptions/SelectOptions.tsx +5 -15
  44. package/dist-package/src/NativeSelect/styles.d.ts +0 -6
  45. package/dist-package/src/NativeSelect/styles.d.ts.map +0 -1
  46. package/dist-package/src/NativeSelect/styles.js +0 -54
  47. package/dist-package/src/NativeSelect/styles.js.map +0 -1
  48. package/dist-package/src/NonNativeSelect/styles.d.ts +0 -7
  49. package/dist-package/src/NonNativeSelect/styles.d.ts.map +0 -1
  50. package/dist-package/src/NonNativeSelect/styles.js +0 -56
  51. package/dist-package/src/NonNativeSelect/styles.js.map +0 -1
  52. package/dist-package/src/NonNativeSelectLimitFooter/styles.d.ts +0 -4
  53. package/dist-package/src/NonNativeSelectLimitFooter/styles.d.ts.map +0 -1
  54. package/dist-package/src/NonNativeSelectLimitFooter/styles.js +0 -10
  55. package/dist-package/src/NonNativeSelectLimitFooter/styles.js.map +0 -1
  56. package/dist-package/src/NonNativeSelectOptions/styles.d.ts +0 -3
  57. package/dist-package/src/NonNativeSelectOptions/styles.d.ts.map +0 -1
  58. package/dist-package/src/NonNativeSelectOptions/styles.js +0 -7
  59. package/dist-package/src/NonNativeSelectOptions/styles.js.map +0 -1
  60. package/dist-package/src/ScrollMenu/styles.d.ts +0 -4
  61. package/dist-package/src/ScrollMenu/styles.d.ts.map +0 -1
  62. package/dist-package/src/ScrollMenu/styles.js +0 -19
  63. package/dist-package/src/ScrollMenu/styles.js.map +0 -1
  64. package/dist-package/src/Select/styles.d.ts +0 -7
  65. package/dist-package/src/Select/styles.d.ts.map +0 -1
  66. package/dist-package/src/Select/styles.js +0 -49
  67. package/dist-package/src/Select/styles.js.map +0 -1
  68. package/dist-package/src/SelectCaret/styles.d.ts +0 -4
  69. package/dist-package/src/SelectCaret/styles.d.ts.map +0 -1
  70. package/dist-package/src/SelectCaret/styles.js +0 -21
  71. package/dist-package/src/SelectCaret/styles.js.map +0 -1
  72. package/dist-package/src/SelectOptions/styles.d.ts +0 -4
  73. package/dist-package/src/SelectOptions/styles.d.ts.map +0 -1
  74. package/dist-package/src/SelectOptions/styles.js +0 -19
  75. package/dist-package/src/SelectOptions/styles.js.map +0 -1
  76. package/src/NativeSelect/styles.ts +0 -57
  77. package/src/NonNativeSelect/styles.ts +0 -59
  78. package/src/NonNativeSelectLimitFooter/styles.ts +0 -12
  79. package/src/NonNativeSelectOptions/styles.ts +0 -8
  80. package/src/ScrollMenu/styles.ts +0 -23
  81. package/src/Select/styles.ts +0 -52
  82. package/src/SelectCaret/styles.ts +0 -23
  83. package/src/SelectOptions/styles.ts +0 -22
@@ -1,9 +1,4 @@
1
1
  import React, { useRef } from 'react'
2
- import cx from 'classnames'
3
- import { NativeSelect as MUINativeSelect } from '@material-ui/core'
4
- import type { Theme } from '@material-ui/core/styles'
5
- import { makeStyles } from '@material-ui/core/styles'
6
- import capitalize from '@material-ui/core/utils/capitalize'
7
2
  import { OutlinedInput } from '@toptal/picasso-outlined-input'
8
3
  import {
9
4
  documentable,
@@ -11,6 +6,7 @@ import {
11
6
  noop,
12
7
  useCombinedRefs,
13
8
  } from '@toptal/picasso-utils'
9
+ import { twJoin, twMerge } from '@toptal/picasso-tailwind-merge'
14
10
 
15
11
  import { SelectCaret } from '../SelectCaret'
16
12
  import type { ValueType, SelectProps } from '../SelectBase'
@@ -23,12 +19,19 @@ import {
23
19
  } from '../SelectBase'
24
20
  import NativeSelectOptions from '../NativeSelectOptions'
25
21
  import NativeSelectPlaceholder from '../NativeSelectPlaceholder'
26
- import styles from './styles'
27
-
28
- const useStyles = makeStyles<Theme>(styles)
22
+ import { NativeSelectInput } from './NativeSelectInput'
29
23
 
30
24
  const DEFAULT_EMPTY_ARRAY_VALUE: ValueType[] = []
31
25
 
26
+ const classesByWidth: Record<
27
+ Exclude<SelectProps['width'], undefined>,
28
+ string
29
+ > = {
30
+ full: 'w-full',
31
+ shrink: 'w-auto',
32
+ auto: '',
33
+ }
34
+
32
35
  export const NativeSelect = documentable(
33
36
  forwardRef(
34
37
  <T extends ValueType, M extends boolean = false>(
@@ -74,8 +77,6 @@ export const NativeSelect = documentable(
74
77
  ...rest
75
78
  } = props
76
79
 
77
- const classes = useStyles()
78
-
79
80
  const selectRef = useCombinedRefs<HTMLInputElement>(
80
81
  ref,
81
82
  useRef<HTMLInputElement>(null)
@@ -104,49 +105,14 @@ export const NativeSelect = documentable(
104
105
  })
105
106
 
106
107
  const startAdornment = selectStartAdornment && (
107
- <div className={classes.startAdornment}>{selectStartAdornment}</div>
108
+ <div className='absolute left-[0.625rem]'>{selectStartAdornment}</div>
108
109
  )
109
110
  const endAdornment = selectEndAdornment && (
110
- <div className={classes.endAdornment}>{selectEndAdornment}</div>
111
+ <div className='absolute right-[1.625rem]'>{selectEndAdornment}</div>
111
112
  )
112
113
 
113
- const nativeSelectComponent = (
114
- <MUINativeSelect
115
- // eslint-disable-next-line react/jsx-props-no-spreading
116
- {...rest}
117
- ref={selectRef}
118
- disabled={disabled}
119
- name={name}
120
- id={id}
121
- startAdornment={startAdornment}
122
- endAdornment={endAdornment}
123
- input={
124
- <OutlinedInput
125
- width={width}
126
- inputProps={{ multiple }}
127
- size={size}
128
- className={classes.nativeInput}
129
- testIds={testIds}
130
- status={error ? 'error' : status}
131
- highlight={highlight}
132
- // eslint-disable-next-line react/jsx-props-no-spreading
133
- {...getInputProps()}
134
- />
135
- }
136
- value={value}
137
- onChange={onChange as any}
138
- IconComponent={() => <SelectCaret disabled={disabled} />}
139
- classes={{
140
- root: cx(classes.select, {
141
- [classes.placeholder]: !selection.isSelected(),
142
- }),
143
- select: cx({
144
- [classes.startAdornmentPadding]:
145
- React.isValidElement(startAdornment),
146
- [classes.endAdornmentPadding]: React.isValidElement(endAdornment),
147
- }),
148
- }}
149
- >
114
+ const children = (
115
+ <>
150
116
  <NativeSelectPlaceholder
151
117
  emptySelectValue={emptySelectValue}
152
118
  disabled={!enableReset}
@@ -159,18 +125,50 @@ export const NativeSelect = documentable(
159
125
  renderOption={renderOption as any}
160
126
  getItemProps={getItemProps}
161
127
  />
162
- </MUINativeSelect>
128
+ </>
129
+ )
130
+
131
+ const nativeSelectComponent = (
132
+ <OutlinedInput
133
+ width={width}
134
+ size={size}
135
+ className='p-0 bg-white'
136
+ testIds={testIds}
137
+ status={error ? 'error' : status}
138
+ highlight={highlight}
139
+ {...getInputProps()}
140
+ {...rest}
141
+ ref={selectRef}
142
+ disabled={disabled}
143
+ name={name}
144
+ id={id}
145
+ startAdornment={startAdornment}
146
+ endAdornment={endAdornment}
147
+ value={value}
148
+ onChange={onChange as any}
149
+ inputComponent={NativeSelectInput as any}
150
+ inputProps={{
151
+ multiple,
152
+ children,
153
+ type: undefined, // We render a select. We can ignore the type provided by the `Input`.
154
+ IconComponent: () => <SelectCaret disabled={disabled} />,
155
+ className: twJoin(
156
+ 'w-full p-2 focus:bg-inheritColor',
157
+ !selection.isSelected() && 'text-gray-600',
158
+ React.isValidElement(startAdornment) && 'pl-[2.5625rem]',
159
+ React.isValidElement(endAdornment) && 'pr-[3.5625rem]'
160
+ ),
161
+ }}
162
+ />
163
163
  )
164
164
 
165
165
  return (
166
166
  <div
167
- className={cx(
168
- classes.root,
167
+ className={twMerge(
168
+ 'relative inline-flex text-[1rem] cursor-pointer',
169
169
  className,
170
- classes[`root${capitalize(width)}`],
171
- {
172
- [classes.rootDisabled]: disabled,
173
- }
170
+ classesByWidth[width],
171
+ disabled && 'cursor-default'
174
172
  )}
175
173
  style={style}
176
174
  ref={inputWrapperRef}
@@ -0,0 +1,51 @@
1
+ import React, { forwardRef } from 'react'
2
+ import { twMerge, twJoin } from '@toptal/picasso-tailwind-merge'
3
+
4
+ type NativeSelectInputProps = {
5
+ className?: string
6
+ disabled?: boolean
7
+ IconComponent?: React.ElementType
8
+ multiple?: boolean
9
+ ownerState?: {}
10
+ } & React.HTMLAttributes<HTMLSelectElement>
11
+
12
+ export const NativeSelectInput = forwardRef<
13
+ HTMLSelectElement,
14
+ NativeSelectInputProps
15
+ >((props, ref) => {
16
+ // omit ownerState from the props
17
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
18
+ const { ownerState, className, disabled, multiple, IconComponent, ...other } =
19
+ props
20
+
21
+ return (
22
+ <>
23
+ <select
24
+ className={twMerge(
25
+ `appearance-none select-none rounded-none min-w-4 cursor-pointer
26
+ focus:bg-black/[.05] focus:rounded-none`,
27
+ disabled && 'cursor-default',
28
+ multiple ? 'h-auto' : '[&_option]:bg-white [&_optgroup]:bg-white',
29
+ className,
30
+ 'pr-6' // From MUI, this rule is more specific and should override classname
31
+ )}
32
+ disabled={disabled}
33
+ multiple={multiple}
34
+ ref={ref}
35
+ {...other}
36
+ />
37
+ {multiple
38
+ ? null
39
+ : IconComponent && (
40
+ <IconComponent
41
+ className={twJoin(
42
+ 'absolute right-0 top-[calc(50%-12px)] pointer-events-none',
43
+ disabled ? 'text-black/[.26]' : 'text-black/[.54]'
44
+ )}
45
+ />
46
+ )}
47
+ </>
48
+ )
49
+ })
50
+
51
+ NativeSelectInput.displayName = 'NativeSelectInput'
@@ -6,14 +6,15 @@ exports[`NativeSelect renders native select 1`] = `
6
6
  class="Picasso-root"
7
7
  >
8
8
  <div
9
- class="makeStyles-root makeStyles-rootFull"
9
+ class="relative inline-flex text-[1rem] cursor-pointer w-full"
10
10
  >
11
11
  <div
12
- class="MuiInputBase-root MuiOutlinedInput-root PicassoOutlinedInput-root PicassoOutlinedInput-rootFull PicassoOutlinedInput-rootMedium makeStyles-nativeInput MuiInputBase-fullWidth"
12
+ class="base-Input relative inline-flex gap-y gap-x items-center rounded-sm [font-size:_unset] hover:[&_.resetButtonDirty]:visible h-8 w-full after:content-[""] after:inline-block after:absolute after:top-0 after:bottom-0 after:right-0 after:left-0 after:pointer-events after:border-solid after:rounded-sm after:border-gray [&:has(input:focus)]:after:border-blue after:border [&:has(input:focus)]:after:shadow-[0_0_0_3px] [&:has(input:focus)]:after:shadow-blue hover:[&:not(:has(input:focus))]:after:border-gray text-black cursor-[inherit] p-0 bg-white"
13
13
  >
14
14
  <select
15
15
  aria-invalid="false"
16
- class="MuiNativeSelect-root makeStyles-select MuiNativeSelect-select MuiInputBase-input MuiOutlinedInput-input PicassoOutlinedInput-input PicassoOutlinedInput-inputMedium"
16
+ class="appearance-none select-none rounded-none min-w focus:rounded-none [&_option]:bg-white [&_optgroup]:bg-white base-Input [&::-webkit-calendar-picker-indicator]:bg bg-transparent border-none box-border cursor-[inherit] h-full outline-none peer resize-none text-md leading-4 text-black [&::placeholder]:text-gray [&::placeholder]:opacity-100 w-full p-2 focus:bg-inheritColor pr-6"
17
+ type="text"
17
18
  >
18
19
  <option
19
20
  disabled=""
@@ -41,7 +42,7 @@ exports[`NativeSelect renders native select 1`] = `
41
42
  </option>
42
43
  </select>
43
44
  <svg
44
- class="PicassoSvgDropdownArrows16-root makeStyles-caret"
45
+ class="PicassoSvgDropdownArrows16-root absolute top-[calc(50%-0.5rem)] right-[0.3125rem] text-graphite text-[1rem] cursor-inherit pointer-events"
45
46
  style="min-width: 16px; min-height: 16px;"
46
47
  viewBox="0 0 16 16"
47
48
  >
@@ -49,20 +50,6 @@ exports[`NativeSelect renders native select 1`] = `
49
50
  d="m10.997 10.29.707.707-3.707 3.707-3.707-3.707.707-.707 3 3 3-3Zm-3-9 3.707 3.707-.707.707-3-3-3 3-.707-.707 3-3 .707-.707Z"
50
51
  />
51
52
  </svg>
52
- <fieldset
53
- aria-hidden="true"
54
- class="PrivateNotchedOutline-root MuiOutlinedInput-notchedOutline PicassoOutlinedInput-notchedOutline"
55
- style="padding-left: 8px;"
56
- >
57
- <legend
58
- class="PrivateNotchedOutline-legend"
59
- style="width: 0.01px;"
60
- >
61
- <span>
62
-
63
- </span>
64
- </legend>
65
- </fieldset>
66
53
  </div>
67
54
  </div>
68
55
  </div>
@@ -75,14 +62,15 @@ exports[`NativeSelect renders native select with the empty option enabled when e
75
62
  class="Picasso-root"
76
63
  >
77
64
  <div
78
- class="makeStyles-root makeStyles-rootFull"
65
+ class="relative inline-flex text-[1rem] cursor-pointer w-full"
79
66
  >
80
67
  <div
81
- class="MuiInputBase-root MuiOutlinedInput-root PicassoOutlinedInput-root PicassoOutlinedInput-rootFull PicassoOutlinedInput-rootMedium makeStyles-nativeInput MuiInputBase-fullWidth"
68
+ class="base-Input relative inline-flex gap-y gap-x items-center rounded-sm [font-size:_unset] hover:[&_.resetButtonDirty]:visible h-8 w-full after:content-[""] after:inline-block after:absolute after:top-0 after:bottom-0 after:right-0 after:left-0 after:pointer-events after:border-solid after:rounded-sm after:border-gray [&:has(input:focus)]:after:border-blue after:border [&:has(input:focus)]:after:shadow-[0_0_0_3px] [&:has(input:focus)]:after:shadow-blue hover:[&:not(:has(input:focus))]:after:border-gray text-black cursor-[inherit] p-0 bg-white"
82
69
  >
83
70
  <select
84
71
  aria-invalid="false"
85
- class="MuiNativeSelect-root makeStyles-select MuiNativeSelect-select MuiInputBase-input MuiOutlinedInput-input PicassoOutlinedInput-input PicassoOutlinedInput-inputMedium"
72
+ class="appearance-none select-none rounded-none min-w focus:rounded-none [&_option]:bg-white [&_optgroup]:bg-white base-Input [&::-webkit-calendar-picker-indicator]:bg bg-transparent border-none box-border cursor-[inherit] h-full outline-none peer resize-none text-md leading-4 text-black [&::placeholder]:text-gray [&::placeholder]:opacity-100 w-full p-2 focus:bg-inheritColor pr-6"
73
+ type="text"
86
74
  >
87
75
  <option
88
76
  value=""
@@ -109,7 +97,7 @@ exports[`NativeSelect renders native select with the empty option enabled when e
109
97
  </option>
110
98
  </select>
111
99
  <svg
112
- class="PicassoSvgDropdownArrows16-root makeStyles-caret"
100
+ class="PicassoSvgDropdownArrows16-root absolute top-[calc(50%-0.5rem)] right-[0.3125rem] text-graphite text-[1rem] cursor-inherit pointer-events"
113
101
  style="min-width: 16px; min-height: 16px;"
114
102
  viewBox="0 0 16 16"
115
103
  >
@@ -117,20 +105,6 @@ exports[`NativeSelect renders native select with the empty option enabled when e
117
105
  d="m10.997 10.29.707.707-3.707 3.707-3.707-3.707.707-.707 3 3 3-3Zm-3-9 3.707 3.707-.707.707-3-3-3 3-.707-.707 3-3 .707-.707Z"
118
106
  />
119
107
  </svg>
120
- <fieldset
121
- aria-hidden="true"
122
- class="PrivateNotchedOutline-root MuiOutlinedInput-notchedOutline PicassoOutlinedInput-notchedOutline"
123
- style="padding-left: 8px;"
124
- >
125
- <legend
126
- class="PrivateNotchedOutline-legend"
127
- style="width: 0.01px;"
128
- >
129
- <span>
130
-
131
- </span>
132
- </legend>
133
- </fieldset>
134
108
  </div>
135
109
  </div>
136
110
  </div>
@@ -1,9 +1,5 @@
1
1
  import React, { useRef } from 'react'
2
2
  import type PopperJs from 'popper.js'
3
- import cx from 'classnames'
4
- import type { Theme } from '@material-ui/core/styles'
5
- import { makeStyles } from '@material-ui/core/styles'
6
- import capitalize from '@material-ui/core/utils/capitalize'
7
3
  import { Search16 } from '@toptal/picasso-icons'
8
4
  import { OutlinedInput } from '@toptal/picasso-outlined-input'
9
5
  import { Popper } from '@toptal/picasso-popper'
@@ -16,6 +12,7 @@ import {
16
12
  } from '@toptal/picasso-utils'
17
13
  import { InputAdornment } from '@toptal/picasso-input-adornment'
18
14
  import { useFieldsLayoutContext } from '@toptal/picasso-form'
15
+ import { twMerge, twJoin } from '@toptal/picasso-tailwind-merge'
19
16
 
20
17
  import { SelectCaret } from '../SelectCaret'
21
18
  import { NonNativeSelectLoader } from '../NonNativeSelectLoader'
@@ -32,12 +29,19 @@ import {
32
29
  filterFlatOptions as defaultFilterOptions,
33
30
  } from '../SelectBase'
34
31
  import { NonNativeSelectOptions } from '../NonNativeSelectOptions'
35
- import styles from './styles'
36
32
  import { NonNativeSelectLimitFooter } from '../NonNativeSelectLimitFooter'
37
- const useStyles = makeStyles<Theme>(styles)
38
33
 
39
34
  const DEFAULT_EMPTY_ARRAY_VALUE: ValueType[] = []
40
35
 
36
+ const classesByWidth: Record<
37
+ Exclude<SelectProps['width'], undefined>,
38
+ string
39
+ > = {
40
+ auto: '',
41
+ full: 'w-full',
42
+ shrink: 'w-auto',
43
+ }
44
+
41
45
  export const NonNativeSelect = documentable(
42
46
  forwardRef(
43
47
  // eslint-disable-next-line max-lines-per-function, complexity
@@ -84,8 +88,6 @@ export const NonNativeSelect = documentable(
84
88
  ...rest
85
89
  } = props
86
90
 
87
- const classes = useStyles()
88
-
89
91
  const selectRef = useCombinedRefs<HTMLInputElement>(
90
92
  ref,
91
93
  useRef<HTMLInputElement>(null)
@@ -128,12 +130,11 @@ export const NonNativeSelect = documentable(
128
130
  <MenuItem
129
131
  as='div'
130
132
  nonSelectable
131
- disableGutters
132
- className={classes.searchInputGutters}
133
+ className='pt-[0.375rem] pl-2 pb-2 pr-2'
133
134
  >
134
135
  <OutlinedInput
135
136
  inputRef={searchInputRef}
136
- className={classes.searchOutlinedInput}
137
+ className='w-full'
137
138
  startAdornment={
138
139
  <InputAdornment position='start' disablePointerEvents>
139
140
  <Search16 />
@@ -164,9 +165,10 @@ export const NonNativeSelect = documentable(
164
165
  <>
165
166
  <div
166
167
  {...rootProps}
167
- className={cx(classes.inputWrapper, {
168
- [classes.horizontalLayout]: layout === 'horizontal',
169
- })}
168
+ className={twJoin(
169
+ 'w-[inherit] outline-0',
170
+ layout === 'horizontal' && 'w-full'
171
+ )}
170
172
  >
171
173
  {!enableAutofill && name && (
172
174
  <input type='hidden' value={displayValue} name={name} />
@@ -183,13 +185,12 @@ export const NonNativeSelect = documentable(
183
185
  endAdornment={endAdornment}
184
186
  // Input specific props
185
187
  value={displayValue}
186
- /* eslint-disable-next-line react/jsx-props-no-spreading */
187
188
  {...getInputProps()}
188
189
  placeholder={placeholder}
189
190
  width={width}
190
191
  readOnly
191
192
  defaultValue={undefined}
192
- className={classes.outlinedInput}
193
+ className='pr-[1.625rem]'
193
194
  highlight={highlight}
194
195
  inputProps={{
195
196
  size: 1, // let input to have smallest width by default for width:'shrink'
@@ -224,7 +225,6 @@ export const NonNativeSelect = documentable(
224
225
  renderOption={renderOption as any}
225
226
  highlightedIndex={highlightedIndex}
226
227
  getItemProps={getItemProps}
227
- // eslint-disable-next-line react/jsx-handler-names
228
228
  onBlur={rootProps.onBlur}
229
229
  selection={selection}
230
230
  filterOptionsValue={filterOptionsValue}
@@ -252,13 +252,11 @@ export const NonNativeSelect = documentable(
252
252
 
253
253
  return (
254
254
  <div
255
- className={cx(
256
- classes.root,
255
+ className={twMerge(
256
+ 'relative inline-flex text-[1rem] cursor-pointer',
257
257
  className,
258
- classes[`root${capitalize(width)}`],
259
- {
260
- [classes.rootDisabled]: disabled,
261
- }
258
+ classesByWidth[width],
259
+ disabled && 'cursor-default'
262
260
  )}
263
261
  style={style}
264
262
  ref={inputWrapperRef}