fix 11997 (#12018)
addressing:
https://github.com/twentyhq/twenty/issues/11997#issuecomment-2875772322
<img width="922" alt="Screenshot 2025-05-13 at 22 52 28"
src="https://github.com/user-attachments/assets/dc3b5fdd-b81b-4732-94f3-2ef2eb0012c2"
/>
before:
https://github.com/user-attachments/assets/b55bf77e-99bf-485f-bcfa-5d311e7d2bd0
after:
https://github.com/user-attachments/assets/70fb80b2-ce9f-4a8a-ac5d-d8c793c023be
### Some other issues I found
- On clicking clear, nothing happens
Before:
https://github.com/user-attachments/assets/01e937bb-b4d4-4296-baa7-ec1602de2cc9
After:
https://github.com/user-attachments/assets/8e4e5022-fe32-44fe-a7e4-5c98a7f3c2fa
- same behaviour for inline cell DateInput:
https://github.com/user-attachments/assets/787354e5-b50a-457c-a392-4779270e2832
### Notes
The root issue seems to be that ViewBarFilterDropdown sets a fixed width
of 208px, which isn’t enough for the calendar to render correctly - it
ends up cropping the content. The fix here is more of a workaround than
a deep fix: I’ve adjusted styles to avoid the cropping, but it might be
worth revisiting how we handle sizing for filter dropdowns in general.
cc @lucasbordeau - thoughts?
Related commit:
afea017c12
---------
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: Félix Malfait <felix@twenty.com>
This commit is contained in:
4
.github/workflows/preview-env-keepalive.yaml
vendored
4
.github/workflows/preview-env-keepalive.yaml
vendored
@ -33,9 +33,7 @@ jobs:
|
|||||||
echo "# === Randomly generated secrets ===" >> packages/twenty-docker/.env
|
echo "# === Randomly generated secrets ===" >> packages/twenty-docker/.env
|
||||||
echo "APP_SECRET=$(openssl rand -base64 32)" >> packages/twenty-docker/.env
|
echo "APP_SECRET=$(openssl rand -base64 32)" >> packages/twenty-docker/.env
|
||||||
echo "PG_DATABASE_PASSWORD=$(openssl rand -hex 16)" >> packages/twenty-docker/.env
|
echo "PG_DATABASE_PASSWORD=$(openssl rand -hex 16)" >> packages/twenty-docker/.env
|
||||||
# Remove line below when true becomes the default value (soon)
|
echo "SIGN_IN_PREFILLED=true" >> packages/twenty-docker/.env
|
||||||
echo "CONFIG_VARIABLES_IN_DB_ENABLED=true" >> packages/twenty-docker/.env
|
|
||||||
|
|
||||||
echo "Docker compose build..."
|
echo "Docker compose build..."
|
||||||
cd packages/twenty-docker/
|
cd packages/twenty-docker/
|
||||||
docker compose build
|
docker compose build
|
||||||
|
|||||||
@ -56,7 +56,7 @@ export const ObjectFilterDropdownBooleanSelect = () => {
|
|||||||
selectableItemIdArray={options.map((option) => option.toString())}
|
selectableItemIdArray={options.map((option) => option.toString())}
|
||||||
hotkeyScope={SingleRecordPickerHotkeyScope.SingleRecordPicker}
|
hotkeyScope={SingleRecordPickerHotkeyScope.SingleRecordPicker}
|
||||||
>
|
>
|
||||||
<DropdownMenuItemsContainer hasMaxHeight>
|
<DropdownMenuItemsContainer hasMaxHeight width="auto">
|
||||||
{options.map((option) => (
|
{options.map((option) => (
|
||||||
<StyledBooleanSelectContainer
|
<StyledBooleanSelectContainer
|
||||||
key={String(option)}
|
key={String(option)}
|
||||||
|
|||||||
@ -81,6 +81,11 @@ export const ObjectFilterDropdownDateInput = () => {
|
|||||||
const isRelativeOperand =
|
const isRelativeOperand =
|
||||||
selectedOperandInDropdown === ViewFilterOperand.IsRelative;
|
selectedOperandInDropdown === ViewFilterOperand.IsRelative;
|
||||||
|
|
||||||
|
const handleClear = () => {
|
||||||
|
isRelativeOperand
|
||||||
|
? handleRelativeDateChange(null)
|
||||||
|
: handleAbsoluteDateChange(null);
|
||||||
|
};
|
||||||
const resolvedValue = objectFilterDropdownCurrentRecordFilter
|
const resolvedValue = objectFilterDropdownCurrentRecordFilter
|
||||||
? resolveDateViewFilterValue(objectFilterDropdownCurrentRecordFilter)
|
? resolveDateViewFilterValue(objectFilterDropdownCurrentRecordFilter)
|
||||||
: null;
|
: null;
|
||||||
@ -99,6 +104,7 @@ export const ObjectFilterDropdownDateInput = () => {
|
|||||||
onChange={handleAbsoluteDateChange}
|
onChange={handleAbsoluteDateChange}
|
||||||
onRelativeDateChange={handleRelativeDateChange}
|
onRelativeDateChange={handleRelativeDateChange}
|
||||||
isDateTimeInput={isDateTimeInput}
|
isDateTimeInput={isDateTimeInput}
|
||||||
|
onClear={handleClear}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -38,7 +38,7 @@ export const ObjectFilterDropdownNumberInput = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<DropdownMenuItemsContainer>
|
<DropdownMenuItemsContainer width="auto">
|
||||||
<DropdownMenuInput
|
<DropdownMenuInput
|
||||||
ref={handleInputRef}
|
ref={handleInputRef}
|
||||||
value={objectFilterDropdownFilterValue}
|
value={objectFilterDropdownFilterValue}
|
||||||
|
|||||||
@ -117,10 +117,10 @@ export const DateInput = ({
|
|||||||
return (
|
return (
|
||||||
<div ref={wrapperRef}>
|
<div ref={wrapperRef}>
|
||||||
<DateTimePicker
|
<DateTimePicker
|
||||||
date={internalValue ?? new Date()}
|
date={internalValue ?? null}
|
||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
onClose={handleClose}
|
onClose={handleClose}
|
||||||
clearable={clearable ? clearable : false}
|
clearable={clearable ?? false}
|
||||||
onEnter={onEnter}
|
onEnter={onEnter}
|
||||||
onEscape={onEscape}
|
onEscape={onEscape}
|
||||||
onClear={handleClear}
|
onClear={handleClear}
|
||||||
|
|||||||
@ -16,7 +16,6 @@ import {
|
|||||||
import { t } from '@lingui/core/macro';
|
import { t } from '@lingui/core/macro';
|
||||||
import { useContext } from 'react';
|
import { useContext } from 'react';
|
||||||
import 'react-datepicker/dist/react-datepicker.css';
|
import 'react-datepicker/dist/react-datepicker.css';
|
||||||
import { isDefined } from 'twenty-shared/utils';
|
|
||||||
import { IconCalendarX } from 'twenty-ui/display';
|
import { IconCalendarX } from 'twenty-ui/display';
|
||||||
import {
|
import {
|
||||||
MenuItemLeftContent,
|
MenuItemLeftContent,
|
||||||
@ -442,16 +441,22 @@ export const DateTimePicker = ({
|
|||||||
|
|
||||||
const highlightedDates = getHighlightedDates(highlightedDateRange);
|
const highlightedDates = getHighlightedDates(highlightedDateRange);
|
||||||
|
|
||||||
const selectedDates = isRelative ? highlightedDates : [dateToUse];
|
const hasDate = date != null;
|
||||||
|
|
||||||
|
const selectedDates = isRelative
|
||||||
|
? highlightedDates
|
||||||
|
: hasDate
|
||||||
|
? [dateToUse]
|
||||||
|
: [];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<StyledContainer calendarDisabled={isRelative}>
|
<StyledContainer calendarDisabled={isRelative}>
|
||||||
<div className={clearable ? 'clearable ' : ''}>
|
<div className={clearable ? 'clearable ' : ''}>
|
||||||
<ReactDatePicker
|
<ReactDatePicker
|
||||||
open={true}
|
open={true}
|
||||||
selected={dateToUse}
|
selected={hasDate ? dateToUse : undefined}
|
||||||
selectedDates={selectedDates}
|
selectedDates={selectedDates}
|
||||||
openToDate={isDefined(dateToUse) ? dateToUse : undefined}
|
openToDate={hasDate ? dateToUse : new Date()}
|
||||||
disabledKeyboardNavigation
|
disabledKeyboardNavigation
|
||||||
onChange={handleDateChange as any}
|
onChange={handleDateChange as any}
|
||||||
customInput={
|
customInput={
|
||||||
|
|||||||
@ -65,7 +65,7 @@ export const EditableFilterDropdownButton = ({
|
|||||||
dropdownOffset={{ y: 8, x: 0 }}
|
dropdownOffset={{ y: 8, x: 0 }}
|
||||||
dropdownPlacement="bottom-start"
|
dropdownPlacement="bottom-start"
|
||||||
onClickOutside={handleDropdownClickOutside}
|
onClickOutside={handleDropdownClickOutside}
|
||||||
dropdownWidth={200}
|
dropdownWidth={280}
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
@ -51,7 +51,7 @@ export const ViewBarFilterDropdown = ({
|
|||||||
dropdownHotkeyScope={hotkeyScope}
|
dropdownHotkeyScope={hotkeyScope}
|
||||||
dropdownOffset={{ y: 8 }}
|
dropdownOffset={{ y: 8 }}
|
||||||
onClickOutside={handleDropdownClickOutside}
|
onClickOutside={handleDropdownClickOutside}
|
||||||
dropdownWidth={208}
|
dropdownWidth={280}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user