-
Notifications
You must be signed in to change notification settings - Fork 2.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Dropdowns should have a max-height and a scroll bar #6105
Comments
To address the issue of dropdowns being larger than the screen height and ensuring a visible scrollbar, follow these steps:
const StyledDropdownMenuItemsExternalContainer = styled.div<{
hasMaxHeight?: boolean;
}>`
--padding: ${({ theme }) => theme.spacing(1)};
align-items: flex-start;
display: flex;
flex-direction: column;
gap: 2px;
height: 100%;
max-height: ${({ hasMaxHeight }) => (hasMaxHeight ? '188px' : 'none')};
overflow-y: auto;
overflow-y: scroll; /* Ensure scrollbar is visible */
padding: var(--padding);
width: calc(100% - 2 * var(--padding));
`;
const StyledDropdownMenu = styled.div<{
disableBlur?: boolean;
disableBorder?: boolean;
width?: `${string}px` | `${number}%` | 'auto' | number;
}>`
backdrop-filter: ${({ theme, disableBlur }) =>
disableBlur ? 'none' : theme.blur.medium};
color: ${({ theme }) => theme.font.color.secondary};
background: ${({ theme, disableBlur }) =>
disableBlur
? theme.background.primary
: theme.background.transparent.primary};
border: ${({ disableBorder, theme }) =>
disableBorder ? 'none' : `1px solid ${theme.border.color.medium}`};
border-radius: ${({ theme }) => theme.border.radius.md};
box-shadow: ${({ theme }) => theme.boxShadow.strong};
display: flex;
flex-direction: column;
z-index: 1;
width: ${({ width = 160 }) =>
typeof width === 'number' ? `${width}px` : width};
max-height: 188px; /* Set max-height */
overflow-y: auto; /* Ensure scrollbar is visible */
`; These changes will ensure that the dropdowns have a max-height and a visible scrollbar when the content exceeds the specified height. References/packages/twenty-front/src/modules/ui/layout/dropdown/components/DropdownMenuItemsContainer.tsx
|
Is this issue open ? Can i take it? |
Sure! Thanks for contributing @gowreesh369 |
@cooldude6000 are you working here? |
Just assigned you @Faisal-imtiyaz123, thanks for contributing! |
@Bonapara Thanks for your quick response as always! |
@Bonapara What should be scroll bar dimensions and color? |
Hi @Faisal-imtiyaz123, we should use the default scroll bar! Thanks for handling this one ;) |
@Bonapara The reason scroll-bar is not visible is because its background gets set to |
I see @Faisal-imtiyaz123, we should remove it indeed! |
@Bonapara So will you provide a different color for the |
@Faisal-imtiyaz123 I think we should remove the "background-color" property for the scrollbar so the default browser color applies automatically. |
@Bonapara I think the best fix to get a default scroll bar and its default behaviour that it shows on scroll is to remove the |
@Faisal-imtiyaz123, where else are they used apart from menus? |
maybe @lucasbordeau will have an input |
@Faisal-imtiyaz123 Here's how to do it :
We would like to refactor all the dropdowns of the app so that they stop at 20px from the bottom of the viewport and remove this hasMaxHeight props from DropdownMenuItemsContainer and the max-height from dropdown menu container. Instead we should implement the size middleware from Put the availableHeight in a react state and use it in a new props From here it should be straightforward to adjust CSS in sub components to have all the dropdowns behaving the same. |
When merging a PR for this, make sure it also solves #6864 |
@FelixMalfait I got this working. Can I raise a PR? |
@harshrajeevsingh of course thank you! |
Fixes: #6105 ### Problem - The dropdown gets clipped when the number of filters increases. ### Solution - Added scroll property to the ```DropdownMenu``` - Added size middleware to the floating UI hook. - Provided padding of 20px to the size middleware, so that it maintains distance from the bottom of the screen. [Screencast from 2024-10-25 13-47-04.webm](https://github.com/user-attachments/assets/c2315ee2-6092-4c4a-8126-dba7ac3bf49b) --------- Co-authored-by: martmull <[email protected]>
Reopening as the fix as been reverted due to side effects @harshrajeevsingh |
@harshrajeevsingh you can create a new branch linked to that issue if you want. If you need to add back your previous fix, just revert the Revert "fix: dropdowns should have a max-height & padding from screen" commit in your branch |
Fixes: #6105 Also fixed side effect due to previous PR: [Screencast from 2024-10-29 13-54-44.webm](https://github.com/user-attachments/assets/f15db853-ca1c-4be8-9362-610122c4d988)
I was shadowing a client that had created lots of field and the Filter dropdown was bigger than their screen's height.
We might (or might not?) want to set a max-height.
Also we want to make sure there's a scroll bar upon scroll (when I added a max-height directly in Chrome, the dropdown become scrollable but I couldn't see any scroll bar)
cc @Bonapara for recommandation
The text was updated successfully, but these errors were encountered: