Skip to content

Commit 82848c4

Browse files
committed
fix: menu min width, size typing and filter select picker
1 parent 4a6e17b commit 82848c4

File tree

4 files changed

+31
-27
lines changed

4 files changed

+31
-27
lines changed

src/Shared/Components/SelectPicker/FilterSelectPicker.tsx

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,20 @@
22
* Copyright (c) 2024. Devtron Inc.
33
*/
44

5-
import { useEffect, useState } from 'react'
5+
import { useState } from 'react'
66
import SelectPicker from './SelectPicker.component'
7-
import { FilterSelectPickerProps, SelectPickerProps } from './type'
7+
import { FilterSelectPickerProps, SelectPickerOptionType, SelectPickerProps } from './type'
88

9-
const FilterSelectPicker = ({ appliedFilterOptions, handleApplyFilter, ...props }: FilterSelectPickerProps) => {
9+
const FilterSelectPicker = ({
10+
appliedFilterOptions,
11+
handleApplyFilter,
12+
options,
13+
...props
14+
}: FilterSelectPickerProps) => {
1015
const [isMenuOpen, setIsMenuOpen] = useState(false)
11-
const [selectedOptions, setSelectedOptions] = useState<FilterSelectPickerProps['options']>()
12-
13-
const resetSelectedOptions = () => {
14-
setSelectedOptions(structuredClone(appliedFilterOptions))
15-
}
16-
17-
useEffect(() => {
18-
resetSelectedOptions()
19-
}, [appliedFilterOptions])
16+
const [selectedOptions, setSelectedOptions] = useState<SelectPickerOptionType[]>(
17+
structuredClone(appliedFilterOptions ?? []),
18+
)
2019

2120
const openMenu = () => {
2221
setIsMenuOpen(true)
@@ -32,7 +31,7 @@ const FilterSelectPicker = ({ appliedFilterOptions, handleApplyFilter, ...props
3231

3332
const handleMenuClose = () => {
3433
closeMenu()
35-
resetSelectedOptions()
34+
setSelectedOptions(structuredClone(appliedFilterOptions ?? []))
3635
}
3736

3837
const handleApplyClick = () => {
@@ -54,17 +53,21 @@ const FilterSelectPicker = ({ appliedFilterOptions, handleApplyFilter, ...props
5453
)
5554

5655
return (
57-
<div>
58-
<SelectPicker
59-
{...props}
60-
isMulti
61-
menuIsOpen={isMenuOpen}
62-
onMenuOpen={openMenu}
63-
onMenuClose={handleMenuClose}
64-
onChange={handleSelectOnChange}
65-
renderMenuListFooter={renderApplyButton}
66-
/>
67-
</div>
56+
<SelectPicker
57+
{...props}
58+
options={options}
59+
value={selectedOptions}
60+
isMulti
61+
menuIsOpen={isMenuOpen}
62+
onMenuOpen={openMenu}
63+
onMenuClose={handleMenuClose}
64+
onChange={handleSelectOnChange}
65+
renderMenuListFooter={renderApplyButton}
66+
controlShouldRenderValue={false}
67+
showSelectedOptionsCount
68+
isSearchable
69+
isClearable={false}
70+
/>
6871
)
6972
}
7073

src/Shared/Components/SelectPicker/SelectPicker.component.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ const SelectPicker = ({
207207
} = multiSelectProps
208208

209209
// Only large variant is supported for multi select picker
210-
const selectSize = isMulti && !controlShouldRenderValue ? ComponentSizeType.large : size
210+
const selectSize = isMulti && controlShouldRenderValue ? ComponentSizeType.large : size
211211
const shouldShowSelectedOptionIcon = !isMulti && showSelectedOptionIcon
212212
const isSelectSearchable = !shouldRenderCustomOptions && isSearchable
213213

@@ -249,7 +249,7 @@ const SelectPicker = ({
249249
shouldRenderCustomOptions={shouldRenderCustomOptions}
250250
/>
251251
),
252-
[shouldRenderCustomOptions],
252+
[shouldRenderCustomOptions, renderMenuListFooter, renderCustomOptions],
253253
)
254254

255255
const renderValueContainer = useCallback(

src/Shared/Components/SelectPicker/type.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,5 +199,5 @@ export interface FilterSelectPickerProps
199199
extends Required<Pick<SelectPickerProps, 'options' | 'isDisabled' | 'placeholder' | 'isLoading'>>,
200200
Pick<SelectPickerProps, 'selectRef' | 'inputId' | 'menuPosition' | 'autoFocus'> {
201201
appliedFilterOptions: SelectPickerProps['options']
202-
handleApplyFilter: (filtersToApply: SelectPickerProps['options']) => void
202+
handleApplyFilter: (filtersToApply: SelectPickerOptionType[]) => void
203203
}

src/Shared/Components/SelectPicker/utils.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ export const getCommonSelectStyle = ({
9393
border: '1px solid var(--N200)',
9494
boxShadow: '0px 2px 4px 0px rgba(0, 0, 0, 0.20)',
9595
width: getMenuWidthFromSize(menuSize),
96+
minWidth: '200px',
9697
zIndex: 'var(--select-picker-menu-index)',
9798
...(getVariantOverrides(variant)?.menu(base, state) || {}),
9899
}),

0 commit comments

Comments
 (0)