Skip to content

Commit 323b87e

Browse files
committed
fix: footer sticky issue
1 parent 2090bf9 commit 323b87e

File tree

4 files changed

+22
-20
lines changed

4 files changed

+22
-20
lines changed

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import ReactSelect, { ControlProps, MenuProps, ValueContainerProps } from 'react-select'
1+
import ReactSelect, { ControlProps, MenuListProps, ValueContainerProps } from 'react-select'
22
import { ReactElement, useCallback, useMemo } from 'react'
33
import { ReactComponent as ErrorIcon } from '@Icons/ic-warning.svg'
44
import { ReactComponent as ICInfoFilledOverride } from '@Icons/ic-info-filled-override.svg'
@@ -11,7 +11,7 @@ import {
1111
SelectPickerControl,
1212
SelectPickerDropdownIndicator,
1313
SelectPickerLoadingIndicator,
14-
SelectPickerMenu,
14+
SelectPickerMenuList,
1515
SelectPickerOption,
1616
SelectPickerValueContainer,
1717
} from './common'
@@ -50,9 +50,9 @@ const SelectPicker = ({
5050
[icon, showSelectedOptionIcon],
5151
)
5252

53-
const renderMenu = useCallback(
54-
(menuProps: MenuProps<SelectPickerOptionType>) => (
55-
<SelectPickerMenu {...menuProps} renderMenuListFooter={renderMenuListFooter} />
53+
const renderMenuList = useCallback(
54+
(menuProps: MenuListProps<SelectPickerOptionType>) => (
55+
<SelectPickerMenuList {...menuProps} renderMenuListFooter={renderMenuListFooter} />
5656
),
5757
[],
5858
)
@@ -72,7 +72,7 @@ const SelectPicker = ({
7272

7373
return (
7474
<div className="flex column left top dc__gap-4">
75-
{/* TODO Eshank: Common out for fields */}
75+
{/* Note: Common out for fields */}
7676
<div className="flex column left top dc__gap-6 w-100">
7777
{label && (
7878
<label
@@ -101,7 +101,7 @@ const SelectPicker = ({
101101
DropdownIndicator: SelectPickerDropdownIndicator,
102102
Control: renderControl,
103103
Option: SelectPickerOption,
104-
Menu: renderMenu,
104+
MenuList: renderMenuList,
105105
ClearIndicator: SelectPickerClearIndicator,
106106
ValueContainer: renderValueContainer,
107107
}}
@@ -120,7 +120,7 @@ const SelectPicker = ({
120120
<span className="dc__ellipsis-right__2nd-line">{error}</span>
121121
</div>
122122
)}
123-
{/* TODO Eshank: Common out for input fields */}
123+
{/* Note: Common out for input fields */}
124124
{helperText && (
125125
<div className="flex left dc__gap-4 fs-11 lh-16 cn-7">
126126
<ICInfoFilledOverride className="icon-dim-16 dc__no-shrink dc__align-self-start" />

src/Shared/Components/SelectPicker/common.tsx

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import {
44
ControlProps,
55
OptionProps,
66
ClearIndicatorProps,
7-
MenuProps,
87
ValueContainerProps,
8+
MenuListProps,
99
} from 'react-select'
1010
import { Progressing } from '@Common/Progressing'
1111
import { ReactComponent as ICCaretDown } from '@Icons/ic-caret-down.svg'
@@ -88,7 +88,7 @@ export const SelectPickerOption = (props: OptionProps<SelectPickerOptionType>) =
8888
)}
8989
<div className="flex-grow-1">
9090
<h4 className="m-0 cn-9 fs-13 fw-4 lh-20 dc__truncate">{label}</h4>
91-
{/* TODO Eshank: Add support for custom ellipsis */}
91+
{/* Add support for custom ellipsis if required */}
9292
{showDescription && <p className="m-0 fs-12 fw-4 lh-18 cn-7 dc__truncate">{description}</p>}
9393
</div>
9494
{endIcon && <div className="dc__no-shrink icon-dim-16 flex dc__fill-available-space">{endIcon}</div>}
@@ -97,16 +97,21 @@ export const SelectPickerOption = (props: OptionProps<SelectPickerOptionType>) =
9797
)
9898
}
9999

100-
export const SelectPickerMenu = ({
100+
export const SelectPickerMenuList = ({
101101
renderMenuListFooter,
102102
...props
103-
}: MenuProps<SelectPickerOptionType> & Pick<SelectPickerProps, 'renderMenuListFooter'>) => {
103+
}: MenuListProps<SelectPickerOptionType> & Pick<SelectPickerProps, 'renderMenuListFooter'>) => {
104104
const { children } = props
105105

106106
return (
107-
<components.Menu {...props}>
108-
{children}
109-
{renderMenuListFooter?.()}
110-
</components.Menu>
107+
<components.MenuList {...props}>
108+
<div className="py-4 cursor">{children}</div>
109+
{/* Added to the bottom of menu list to prevent from hiding when the menu is opened close to the bottom of the screen */}
110+
{renderMenuListFooter && (
111+
<div className=" dc__position-sticky dc__bottom-0 dc__bottom-radius-4 bcn-0">
112+
{renderMenuListFooter()}
113+
</div>
114+
)}
115+
</components.MenuList>
111116
)
112117
}

src/Shared/Components/SelectPicker/type.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export interface SelectPickerOptionType extends OptionType<number | string, Reac
1111

1212
type SelectProps = ReactSelectProps<SelectPickerOptionType>
1313

14-
// TODO Eshank: Add support for border less
14+
// TODO: Add support for border less
1515
export interface SelectPickerProps
1616
extends Pick<
1717
SelectProps,
@@ -28,7 +28,6 @@ export interface SelectPickerProps
2828
| 'isDisabled'
2929
| 'isLoading'
3030
| 'required'
31-
| 'menuIsOpen'
3231
>,
3332
Required<Pick<SelectProps, 'classNamePrefix' | 'inputId' | 'name'>> {
3433
icon?: ReactElement

src/Shared/Components/SelectPicker/utils.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@ export const getCommonSelectStyle = ({
3737
menuList: (base) => ({
3838
...base,
3939
padding: 0,
40-
paddingBlock: '4px',
41-
cursor: 'pointer',
4240
}),
4341
control: (base, state) => ({
4442
...base,

0 commit comments

Comments
 (0)