diff --git a/packages/twenty-front/src/modules/activities/calendar/components/CalendarEventDetails.tsx b/packages/twenty-front/src/modules/activities/calendar/components/CalendarEventDetails.tsx index f040cfdd7..608e4cbc7 100644 --- a/packages/twenty-front/src/modules/activities/calendar/components/CalendarEventDetails.tsx +++ b/packages/twenty-front/src/modules/activities/calendar/components/CalendarEventDetails.tsx @@ -11,10 +11,10 @@ import { RecordFieldComponentInstanceContext } from '@/object-record/record-fiel import { RecordInlineCell } from '@/object-record/record-inline-cell/components/RecordInlineCell'; import { PropertyBox } from '@/object-record/record-inline-cell/property-box/components/PropertyBox'; import { getRecordFieldInputId } from '@/object-record/utils/getRecordFieldInputId'; -import { mapArrayToObject } from '~/utils/array/mapArrayToObject'; -import { beautifyPastDateRelativeToNow } from '~/utils/date-utils'; import { Chip, ChipAccent, ChipSize, ChipVariant } from 'twenty-ui/components'; import { IconCalendarEvent } from 'twenty-ui/display'; +import { mapArrayToObject } from '~/utils/array/mapArrayToObject'; +import { beautifyPastDateRelativeToNow } from '~/utils/date-utils'; type CalendarEventDetailsProps = { calendarEvent: CalendarEvent; @@ -97,7 +97,6 @@ export const CalendarEventDetails = ({ { const { performSearch: multipleRecordPickerPerformSearch } = useMultipleRecordPickerPerformSearch(); + const { setHotkeyScopeAndMemorizePreviousScope } = usePreviousHotkeyScope(); + const openActivityTargetCellEditMode = useRecoilCallback( ({ set, snapshot }) => ({ @@ -79,8 +83,12 @@ export const useOpenActivityTargetCellEditMode = () => { }), ), }); + + setHotkeyScopeAndMemorizePreviousScope( + MultipleRecordPickerHotkeyScope.MultipleRecordPicker, + ); }, - [multipleRecordPickerPerformSearch], + [multipleRecordPickerPerformSearch, setHotkeyScopeAndMemorizePreviousScope], ); return { openActivityTargetCellEditMode }; diff --git a/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/EventFieldDiffValue.tsx b/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/EventFieldDiffValue.tsx index c518ad70f..0786c912f 100644 --- a/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/EventFieldDiffValue.tsx +++ b/packages/twenty-front/src/modules/activities/timeline-activities/rows/main-object/components/EventFieldDiffValue.tsx @@ -53,7 +53,6 @@ export const EventFieldDiffValue = ({ }, defaultValue: fieldMetadataItem.defaultValue, }, - hotkeyScope: 'field-event-diff', isReadOnly: false, }} > diff --git a/packages/twenty-front/src/modules/object-record/record-board/record-board-card/components/RecordBoardCardBody.tsx b/packages/twenty-front/src/modules/object-record/record-board/record-board-card/components/RecordBoardCardBody.tsx index 48e075171..1fd3ad044 100644 --- a/packages/twenty-front/src/modules/object-record/record-board/record-board-card/components/RecordBoardCardBody.tsx +++ b/packages/twenty-front/src/modules/object-record/record-board/record-board-card/components/RecordBoardCardBody.tsx @@ -13,7 +13,6 @@ import { FieldMetadata } from '@/object-record/record-field/types/FieldMetadata' import { getFieldButtonIcon } from '@/object-record/record-field/utils/getFieldButtonIcon'; import { isFieldValueReadOnly } from '@/object-record/record-field/utils/isFieldValueReadOnly'; import { RecordInlineCell } from '@/object-record/record-inline-cell/components/RecordInlineCell'; -import { InlineCellHotkeyScope } from '@/object-record/record-inline-cell/types/InlineCellHotkeyScope'; import { getRecordFieldInputId } from '@/object-record/utils/getRecordFieldInputId'; import { useContext } from 'react'; @@ -67,7 +66,6 @@ export const RecordBoardCardBody = ({ }), }, useUpdateRecord: useUpdateOneRecordHook, - hotkeyScope: InlineCellHotkeyScope.InlineCell, isDisplayModeFixHeight: true, }} > diff --git a/packages/twenty-front/src/modules/object-record/record-field/components/FieldContextProvider.tsx b/packages/twenty-front/src/modules/object-record/record-field/components/FieldContextProvider.tsx index 37971e161..f1b2573ea 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/components/FieldContextProvider.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/components/FieldContextProvider.tsx @@ -6,7 +6,6 @@ import { RecordUpdateHook, RecordUpdateHookParams, } from '@/object-record/record-field/contexts/FieldContext'; -import { InlineCellHotkeyScope } from '@/object-record/record-inline-cell/types/InlineCellHotkeyScope'; import { ReactNode } from 'react'; export const FieldContextProvider = ({ @@ -72,7 +71,6 @@ export const FieldContextProvider = ({ }), useUpdateRecord: customUseUpdateOneObjectHook ?? useUpdateOneObjectMutation, - hotkeyScope: InlineCellHotkeyScope.InlineCell, clearable, overridenIsFieldEmpty, isReadOnly: false, diff --git a/packages/twenty-front/src/modules/object-record/record-field/contexts/FieldContext.ts b/packages/twenty-front/src/modules/object-record/record-field/contexts/FieldContext.ts index 61bfb1cc9..991f5cf5d 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/contexts/FieldContext.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/contexts/FieldContext.ts @@ -23,8 +23,8 @@ export type GenericFieldContextType = { fieldDefinition: FieldDefinition; useUpdateRecord?: RecordUpdateHook; recordId: string; - hotkeyScope: string; isLabelIdentifier: boolean; + isLabelIdentifierCompact?: boolean; labelIdentifierLink?: string; clearable?: boolean; maxWidth?: number; diff --git a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/FormDateTimeFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/FormDateTimeFieldInput.tsx index 52542ca56..82f4589a7 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/FormDateTimeFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/FormDateTimeFieldInput.tsx @@ -6,7 +6,6 @@ import { VariablePickerComponent } from '@/object-record/record-field/form-types import { InputLabel } from '@/ui/input/components/InputLabel'; import { DateTimePicker, - MONTH_AND_YEAR_DROPDOWN_ID, MONTH_AND_YEAR_DROPDOWN_MONTH_SELECT_ID, MONTH_AND_YEAR_DROPDOWN_YEAR_SELECT_ID, } from '@/ui/input/components/internal/date/components/InternalDatePicker'; @@ -30,8 +29,8 @@ import { useState, } from 'react'; import { isDefined } from 'twenty-shared/utils'; -import { Nullable } from 'twenty-ui/utilities'; import { TEXT_INPUT_STYLE } from 'twenty-ui/theme'; +import { Nullable } from 'twenty-ui/utilities'; const StyledInputContainer = styled(FormFieldInputInputContainer)` display: grid; @@ -140,7 +139,6 @@ export const FormDateTimeFieldInput = ({ } }; - const { closeDropdown } = useDropdown(MONTH_AND_YEAR_DROPDOWN_ID); const { closeDropdown: closeDropdownMonthSelect } = useDropdown( MONTH_AND_YEAR_DROPDOWN_MONTH_SELECT_ID, ); @@ -162,7 +160,6 @@ export const FormDateTimeFieldInput = ({ closeDropdownYearSelect(); closeDropdownMonthSelect(); - closeDropdown(); handlePickerClickOutside(); }, enabled: displayDatePicker, diff --git a/packages/twenty-front/src/modules/object-record/record-field/hooks/__tests__/useGetButtonIcon.test.tsx b/packages/twenty-front/src/modules/object-record/record-field/hooks/__tests__/useGetButtonIcon.test.tsx index 62094e068..4a563e1e4 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/hooks/__tests__/useGetButtonIcon.test.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/hooks/__tests__/useGetButtonIcon.test.tsx @@ -21,7 +21,6 @@ const getWrapper = value={{ fieldDefinition, recordId, - hotkeyScope: 'hotkeyScope', isLabelIdentifier: false, isReadOnly: false, }} diff --git a/packages/twenty-front/src/modules/object-record/record-field/hooks/__tests__/useIsFieldEmpty.test.tsx b/packages/twenty-front/src/modules/object-record/record-field/hooks/__tests__/useIsFieldEmpty.test.tsx index 9dbbdaca5..ac8f8e9db 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/hooks/__tests__/useIsFieldEmpty.test.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/hooks/__tests__/useIsFieldEmpty.test.tsx @@ -14,7 +14,6 @@ const Wrapper = ({ children }: { children: ReactNode }) => ( value={{ fieldDefinition: phonesFieldDefinition, recordId, - hotkeyScope: 'hotkeyScope', isLabelIdentifier: false, isReadOnly: false, }} diff --git a/packages/twenty-front/src/modules/object-record/record-field/hooks/__tests__/useIsFieldInputOnly.test.tsx b/packages/twenty-front/src/modules/object-record/record-field/hooks/__tests__/useIsFieldInputOnly.test.tsx index 0be22d108..f7cf7eb8c 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/hooks/__tests__/useIsFieldInputOnly.test.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/hooks/__tests__/useIsFieldInputOnly.test.tsx @@ -20,7 +20,6 @@ const getWrapper = value={{ fieldDefinition, recordId, - hotkeyScope: 'hotkeyScope', isLabelIdentifier: false, isReadOnly: false, }} diff --git a/packages/twenty-front/src/modules/object-record/record-field/hooks/__tests__/usePersistField.test.tsx b/packages/twenty-front/src/modules/object-record/record-field/hooks/__tests__/usePersistField.test.tsx index 4aabb9110..07cfcf9bb 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/hooks/__tests__/usePersistField.test.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/hooks/__tests__/usePersistField.test.tsx @@ -102,7 +102,6 @@ const getWrapper = value={{ fieldDefinition, recordId, - hotkeyScope: 'hotkeyScope', isLabelIdentifier: false, useUpdateRecord: useUpdateOneRecordMutation, isReadOnly: false, diff --git a/packages/twenty-front/src/modules/object-record/record-field/hooks/__tests__/useToggleEditOnlyInput.test.tsx b/packages/twenty-front/src/modules/object-record/record-field/hooks/__tests__/useToggleEditOnlyInput.test.tsx index 9ae6197d6..2ea2a1535 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/hooks/__tests__/useToggleEditOnlyInput.test.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/hooks/__tests__/useToggleEditOnlyInput.test.tsx @@ -339,7 +339,6 @@ const Wrapper = ({ children }: { children: ReactNode }) => { value={{ fieldDefinition: booleanFieldDefinition, recordId, - hotkeyScope: 'hotkeyScope', isLabelIdentifier: false, useUpdateRecord: useUpdateOneRecordMutation, isReadOnly: false, diff --git a/packages/twenty-front/src/modules/object-record/record-field/hooks/useOpenFieldInputEditMode.ts b/packages/twenty-front/src/modules/object-record/record-field/hooks/useOpenFieldInputEditMode.ts index af2909b86..50695d003 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/hooks/useOpenFieldInputEditMode.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/hooks/useOpenFieldInputEditMode.ts @@ -17,6 +17,8 @@ import { isFieldRelationFromManyObjects } from '@/object-record/record-field/typ import { isFieldRelationToOneObject } from '@/object-record/record-field/types/guards/isFieldRelationToOneObject'; import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState'; import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector'; +import { DEFAULT_CELL_SCOPE } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2'; +import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope'; import { useRecoilCallback } from 'recoil'; import { isDefined } from 'twenty-shared/utils'; @@ -28,6 +30,8 @@ export const useOpenFieldInputEditMode = () => { const { openActivityTargetCellEditMode } = useOpenActivityTargetCellEditMode(); + const setHotkeyScope = useSetHotkeyScope(); + const openFieldInput = useRecoilCallback( ({ snapshot }) => ({ @@ -37,13 +41,6 @@ export const useOpenFieldInputEditMode = () => { fieldDefinition: FieldDefinition; recordId: string; }) => { - if (isFieldRelationToOneObject(fieldDefinition)) { - openRelationToOneFieldInput({ - fieldName: fieldDefinition.metadata.fieldName, - recordId: recordId, - }); - } - if ( isFieldRelationFromManyObjects(fieldDefinition) && ['taskTarget', 'noteTarget'].includes( @@ -80,6 +77,15 @@ export const useOpenFieldInputEditMode = () => { return; } + if (isFieldRelationToOneObject(fieldDefinition)) { + openRelationToOneFieldInput({ + fieldName: fieldDefinition.metadata.fieldName, + recordId: recordId, + }); + + return; + } + if (isFieldRelationFromManyObjects(fieldDefinition)) { if ( isDefined( @@ -92,13 +98,20 @@ export const useOpenFieldInputEditMode = () => { fieldDefinition.metadata.relationObjectMetadataNameSingular, recordId: recordId, }); + return; } } + + setHotkeyScope( + DEFAULT_CELL_SCOPE.scope, + DEFAULT_CELL_SCOPE.customScopes, + ); }, [ openActivityTargetCellEditMode, openRelationFromManyFieldInput, openRelationToOneFieldInput, + setHotkeyScope, ], ); diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/display/components/ChipFieldDisplay.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/display/components/ChipFieldDisplay.tsx index 2c99b8cb7..a602bfa09 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/display/components/ChipFieldDisplay.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/display/components/ChipFieldDisplay.tsx @@ -8,7 +8,7 @@ export const ChipFieldDisplay = () => { recordValue, objectNameSingular, labelIdentifierLink, - isLabelHidden, + isLabelIdentifierCompact, } = useChipFieldDisplay(); if (!isDefined(recordValue)) { @@ -21,7 +21,7 @@ export const ChipFieldDisplay = () => { record={recordValue} size={ChipSize.Small} to={labelIdentifierLink} - isLabelHidden={isLabelHidden} + isLabelHidden={isLabelIdentifierCompact} /> ); }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/display/components/__stories__/perf/RelationFromManyFieldDisplay.perf.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/display/components/__stories__/perf/RelationFromManyFieldDisplay.perf.stories.tsx index b6aa64607..f8a1455a1 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/display/components/__stories__/perf/RelationFromManyFieldDisplay.perf.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/display/components/__stories__/perf/RelationFromManyFieldDisplay.perf.stories.tsx @@ -15,12 +15,12 @@ import { ChipGeneratorsDecorator } from '~/testing/decorators/ChipGeneratorsDeco import { MemoryRouterDecorator } from '~/testing/decorators/MemoryRouterDecorator'; import { getProfilingStory } from '~/testing/profiling/utils/getProfilingStory'; +import { ComponentDecorator } from 'twenty-ui/testing'; import { fieldValue, otherPersonMock, relationFromManyFieldDisplayMock, } from './relationFromManyFieldDisplayMock'; -import { ComponentDecorator } from 'twenty-ui/testing'; const RelationFieldValueSetterEffect = () => { const setEntity = useSetRecoilState( @@ -69,7 +69,6 @@ const meta: Meta = { fieldDefinition: { ...relationFromManyFieldDisplayMock.fieldDefinition, } as unknown as FieldDefinition, - hotkeyScope: 'hotkey-scope', isReadOnly: false, }} > diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useAddressField.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useAddressField.ts index 879a28883..4387c6fb1 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useAddressField.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useAddressField.ts @@ -13,7 +13,7 @@ import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata'; import { isFieldAddress } from '../../types/guards/isFieldAddress'; export const useAddressField = () => { - const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext); + const { recordId, fieldDefinition } = useContext(FieldContext); assertFieldMetadata( FieldMetadataType.ADDRESS, @@ -51,7 +51,6 @@ export const useAddressField = () => { setFieldValue, draftValue, setDraftValue, - hotkeyScope, persistAddressField, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useArrayField.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useArrayField.ts index 3f6493ac5..ea24e1c08 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useArrayField.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useArrayField.ts @@ -10,7 +10,7 @@ import { useRecoilState } from 'recoil'; import { FieldMetadataType } from '~/generated-metadata/graphql'; export const useArrayField = () => { - const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext); + const { recordId, fieldDefinition } = useContext(FieldContext); assertFieldMetadata(FieldMetadataType.ARRAY, isFieldArray, fieldDefinition); @@ -37,8 +37,8 @@ export const useArrayField = () => { return { fieldValue, + fieldDefinition, setFieldValue, persistArrayField, - hotkeyScope, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useBooleanField.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useBooleanField.ts index 1ea30af8b..5bff89892 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useBooleanField.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useBooleanField.ts @@ -9,7 +9,7 @@ import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata'; import { isFieldBoolean } from '../../types/guards/isFieldBoolean'; export const useBooleanField = () => { - const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext); + const { recordId, fieldDefinition } = useContext(FieldContext); assertFieldMetadata( FieldMetadataType.BOOLEAN, @@ -30,6 +30,5 @@ export const useBooleanField = () => { fieldDefinition, fieldValue, setFieldValue, - hotkeyScope, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useChipFieldDisplay.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useChipFieldDisplay.ts index fc6eede7b..4ddfdd667 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useChipFieldDisplay.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useChipFieldDisplay.ts @@ -8,23 +8,17 @@ import { isFieldText } from '@/object-record/record-field/types/guards/isFieldTe import { useRecordValue } from '@/object-record/record-store/contexts/RecordFieldValueSelectorContext'; import { isFieldActor } from '@/object-record/record-field/types/guards/isFieldActor'; -import { isRecordTableScrolledLeftComponentState } from '@/object-record/record-table/states/isRecordTableScrolledLeftComponentState'; -import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2'; import { isDefined } from 'twenty-shared/utils'; -import { useIsMobile } from 'twenty-ui/utilities'; import { FieldContext } from '../../contexts/FieldContext'; export const useChipFieldDisplay = () => { - const { recordId, fieldDefinition, isLabelIdentifier, labelIdentifierLink } = - useContext(FieldContext); - - const isMobile = useIsMobile(); - const isRecordTableScrolledLeftComponent = useRecoilComponentValueV2( - isRecordTableScrolledLeftComponentState, - ); - - const isLabelHidden = - isMobile && isLabelIdentifier && !isRecordTableScrolledLeftComponent; + const { + recordId, + fieldDefinition, + isLabelIdentifier, + labelIdentifierLink, + isLabelIdentifierCompact, + } = useContext(FieldContext); const { chipGeneratorPerObjectPerField } = useContext( PreComputedChipGeneratorsContext, @@ -53,6 +47,6 @@ export const useChipFieldDisplay = () => { recordValue, isLabelIdentifier, labelIdentifierLink, - isLabelHidden, + isLabelIdentifierCompact, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useCurrencyField.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useCurrencyField.ts index 0fe6404c8..aec82137b 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useCurrencyField.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useCurrencyField.ts @@ -1,20 +1,19 @@ import { useContext } from 'react'; import { useRecoilState, useRecoilValue } from 'recoil'; +import { FieldContext } from '@/object-record/record-field/contexts/FieldContext'; +import { usePersistField } from '@/object-record/record-field/hooks/usePersistField'; import { useRecordFieldInput } from '@/object-record/record-field/hooks/useRecordFieldInput'; +import { FieldCurrencyValue } from '@/object-record/record-field/types/FieldMetadata'; +import { assertFieldMetadata } from '@/object-record/record-field/types/guards/assertFieldMetadata'; +import { isFieldCurrency } from '@/object-record/record-field/types/guards/isFieldCurrency'; +import { isFieldCurrencyValue } from '@/object-record/record-field/types/guards/isFieldCurrencyValue'; import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector'; import { FieldMetadataType } from '~/generated-metadata/graphql'; import { convertCurrencyAmountToCurrencyMicros } from '~/utils/convertCurrencyToCurrencyMicros'; -import { FieldContext } from '../../contexts/FieldContext'; -import { usePersistField } from '../../hooks/usePersistField'; -import { FieldCurrencyValue } from '../../types/FieldMetadata'; -import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata'; -import { isFieldCurrency } from '../../types/guards/isFieldCurrency'; -import { isFieldCurrencyValue } from '../../types/guards/isFieldCurrencyValue'; - export const useCurrencyField = () => { - const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext); + const { recordId, fieldDefinition } = useContext(FieldContext); assertFieldMetadata( FieldMetadataType.CURRENCY, @@ -68,7 +67,6 @@ export const useCurrencyField = () => { draftValue, setDraftValue, setFieldValue, - hotkeyScope, persistCurrencyField, defaultValue, }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useDateField.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useDateField.ts index d74ccadf2..d2a6da293 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useDateField.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useDateField.ts @@ -11,8 +11,7 @@ import { FieldContext } from '../../contexts/FieldContext'; import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata'; export const useDateField = () => { - const { recordId, fieldDefinition, hotkeyScope, clearable } = - useContext(FieldContext); + const { recordId, fieldDefinition, clearable } = useContext(FieldContext); assertFieldMetadata(FieldMetadataType.DATE, isFieldDate, fieldDefinition); @@ -32,7 +31,6 @@ export const useDateField = () => { fieldValue, setDraftValue, setFieldValue, - hotkeyScope, clearable, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useDateFieldDisplay.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useDateFieldDisplay.ts index 2e400704d..bbae72480 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useDateFieldDisplay.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useDateFieldDisplay.ts @@ -7,8 +7,7 @@ import { FieldDateMetadata } from '@/object-record/record-field/types/FieldMetad import { FieldContext } from '../../contexts/FieldContext'; export const useDateFieldDisplay = () => { - const { recordId, fieldDefinition, hotkeyScope, clearable } = - useContext(FieldContext); + const { recordId, fieldDefinition, clearable } = useContext(FieldContext); const fieldName = fieldDefinition.metadata.fieldName; @@ -23,7 +22,6 @@ export const useDateFieldDisplay = () => { // Maybe a level above ? fieldDefinition: fieldDefinition as FieldDefinition, fieldValue, - hotkeyScope, clearable, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useDateTimeField.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useDateTimeField.ts index ab8ba068c..c976a322e 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useDateTimeField.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useDateTimeField.ts @@ -11,8 +11,7 @@ import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata'; import { isFieldDateTime } from '../../types/guards/isFieldDateTime'; export const useDateTimeField = () => { - const { recordId, fieldDefinition, hotkeyScope, clearable } = - useContext(FieldContext); + const { recordId, fieldDefinition, clearable } = useContext(FieldContext); assertFieldMetadata( FieldMetadataType.DATE_TIME, @@ -36,7 +35,6 @@ export const useDateTimeField = () => { fieldValue, setDraftValue, setFieldValue, - hotkeyScope, clearable, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useDateTimeFieldDisplay.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useDateTimeFieldDisplay.ts index 412271428..89b4e47b0 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useDateTimeFieldDisplay.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useDateTimeFieldDisplay.ts @@ -7,8 +7,7 @@ import { FieldDateTimeMetadata } from '@/object-record/record-field/types/FieldM import { FieldContext } from '../../contexts/FieldContext'; export const useDateTimeFieldDisplay = () => { - const { recordId, fieldDefinition, hotkeyScope, clearable } = - useContext(FieldContext); + const { recordId, fieldDefinition, clearable } = useContext(FieldContext); const fieldName = fieldDefinition.metadata.fieldName; @@ -20,7 +19,6 @@ export const useDateTimeFieldDisplay = () => { return { fieldDefinition: fieldDefinition as FieldDefinition, fieldValue, - hotkeyScope, clearable, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useEmailsField.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useEmailsField.ts index 38acd5dbe..17ea48a5f 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useEmailsField.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useEmailsField.ts @@ -13,7 +13,7 @@ import { FieldContext } from '../../contexts/FieldContext'; import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata'; export const useEmailsField = () => { - const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext); + const { recordId, fieldDefinition } = useContext(FieldContext); assertFieldMetadata(FieldMetadataType.EMAILS, isFieldEmails, fieldDefinition); @@ -47,7 +47,6 @@ export const useEmailsField = () => { draftValue, setDraftValue, setFieldValue, - hotkeyScope, persistEmailsField, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useEmailsFieldDisplay.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useEmailsFieldDisplay.ts index c3a66facf..3761ff3e6 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useEmailsFieldDisplay.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useEmailsFieldDisplay.ts @@ -6,7 +6,7 @@ import { FieldEmailsValue } from '@/object-record/record-field/types/FieldMetada import { FieldContext } from '../../contexts/FieldContext'; export const useEmailsFieldDisplay = () => { - const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext); + const { recordId, fieldDefinition } = useContext(FieldContext); const fieldName = fieldDefinition.metadata.fieldName; @@ -18,6 +18,5 @@ export const useEmailsFieldDisplay = () => { return { fieldDefinition, fieldValue, - hotkeyScope, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useFullNameField.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useFullNameField.ts index c34fab450..57b5c8ec2 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useFullNameField.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useFullNameField.ts @@ -1,19 +1,18 @@ import { useContext } from 'react'; import { useRecoilState, useRecoilValue } from 'recoil'; +import { FieldContext } from '@/object-record/record-field/contexts/FieldContext'; +import { usePersistField } from '@/object-record/record-field/hooks/usePersistField'; import { useRecordFieldInput } from '@/object-record/record-field/hooks/useRecordFieldInput'; +import { FieldFullNameValue } from '@/object-record/record-field/types/FieldMetadata'; +import { assertFieldMetadata } from '@/object-record/record-field/types/guards/assertFieldMetadata'; +import { isFieldFullName } from '@/object-record/record-field/types/guards/isFieldFullName'; +import { isFieldFullNameValue } from '@/object-record/record-field/types/guards/isFieldFullNameValue'; import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector'; import { FieldMetadataType } from '~/generated-metadata/graphql'; -import { FieldContext } from '../../contexts/FieldContext'; -import { usePersistField } from '../../hooks/usePersistField'; -import { FieldFullNameValue } from '../../types/FieldMetadata'; -import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata'; -import { isFieldFullName } from '../../types/guards/isFieldFullName'; -import { isFieldFullNameValue } from '../../types/guards/isFieldFullNameValue'; - export const useFullNameField = () => { - const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext); + const { recordId, fieldDefinition } = useContext(FieldContext); assertFieldMetadata( FieldMetadataType.FULL_NAME, @@ -51,7 +50,6 @@ export const useFullNameField = () => { setFieldValue, draftValue, setDraftValue, - hotkeyScope, persistFullNameField, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useJsonField.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useJsonField.ts index d0cbd7423..98235570d 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useJsonField.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useJsonField.ts @@ -12,8 +12,7 @@ import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata'; import { isFieldRawJson } from '../../types/guards/isFieldRawJson'; export const useJsonField = () => { - const { recordId, fieldDefinition, hotkeyScope, maxWidth } = - useContext(FieldContext); + const { recordId, fieldDefinition, maxWidth } = useContext(FieldContext); assertFieldMetadata( FieldMetadataType.RAW_JSON, @@ -54,7 +53,6 @@ export const useJsonField = () => { fieldDefinition, fieldValue, setFieldValue, - hotkeyScope, persistJsonField, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useLinksField.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useLinksField.ts index 003c34965..40e63bd00 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useLinksField.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useLinksField.ts @@ -13,7 +13,7 @@ import { FieldContext } from '../../contexts/FieldContext'; import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata'; export const useLinksField = () => { - const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext); + const { recordId, fieldDefinition } = useContext(FieldContext); assertFieldMetadata(FieldMetadataType.LINKS, isFieldLinks, fieldDefinition); @@ -47,7 +47,6 @@ export const useLinksField = () => { draftValue, setDraftValue, setFieldValue, - hotkeyScope, persistLinksField, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useMultiSelectField.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useMultiSelectField.ts index e8e3b2918..b07cdfbfc 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useMultiSelectField.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useMultiSelectField.ts @@ -12,7 +12,7 @@ import { recordStoreFamilySelector } from '@/object-record/record-store/states/s import { FieldMetadataType } from '~/generated/graphql'; export const useMultiSelectField = () => { - const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext); + const { recordId, fieldDefinition } = useContext(FieldContext); assertFieldMetadata( FieldMetadataType.MULTI_SELECT, @@ -45,6 +45,5 @@ export const useMultiSelectField = () => { draftValue, setDraftValue, setFieldValue, - hotkeyScope, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useNumberField.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useNumberField.ts index 4f4e18ecf..595547f0c 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useNumberField.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useNumberField.ts @@ -18,7 +18,7 @@ import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata'; import { isFieldNumber } from '../../types/guards/isFieldNumber'; export const useNumberField = () => { - const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext); + const { recordId, fieldDefinition } = useContext(FieldContext); assertFieldMetadata(FieldMetadataType.NUMBER, isFieldNumber, fieldDefinition); @@ -65,7 +65,6 @@ export const useNumberField = () => { draftValue, setDraftValue, setFieldValue, - hotkeyScope, persistNumberField, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useNumberFieldDisplay.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useNumberFieldDisplay.ts index 90e89c5a9..232749405 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useNumberFieldDisplay.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useNumberFieldDisplay.ts @@ -8,7 +8,7 @@ import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata'; import { isFieldNumber } from '../../types/guards/isFieldNumber'; export const useNumberFieldDisplay = () => { - const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext); + const { recordId, fieldDefinition } = useContext(FieldContext); assertFieldMetadata(FieldMetadataType.NUMBER, isFieldNumber, fieldDefinition); @@ -18,6 +18,5 @@ export const useNumberFieldDisplay = () => { return { fieldDefinition, fieldValue, - hotkeyScope, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/usePhonesField.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/usePhonesField.ts index fc913f0b5..37420d219 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/usePhonesField.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/usePhonesField.ts @@ -13,7 +13,7 @@ import { FieldContext } from '../../contexts/FieldContext'; import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata'; export const usePhonesField = () => { - const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext); + const { recordId, fieldDefinition } = useContext(FieldContext); assertFieldMetadata(FieldMetadataType.PHONES, isFieldPhones, fieldDefinition); @@ -47,7 +47,6 @@ export const usePhonesField = () => { draftValue, setDraftValue, setFieldValue, - hotkeyScope, persistPhonesField, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRatingField.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRatingField.ts index 0aecf8cd7..f558d35e2 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRatingField.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRatingField.ts @@ -10,7 +10,7 @@ import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata'; import { isFieldRating } from '../../types/guards/isFieldRating'; export const useRatingField = () => { - const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext); + const { recordId, fieldDefinition } = useContext(FieldContext); assertFieldMetadata(FieldMetadataType.RATING, isFieldRating, fieldDefinition); @@ -29,6 +29,5 @@ export const useRatingField = () => { fieldDefinition, rating, setFieldValue, - hotkeyScope, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRelationField.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRelationField.ts index adf863e5d..5e83ad696 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRelationField.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRelationField.ts @@ -7,10 +7,10 @@ import { FieldRelationValue } from '@/object-record/record-field/types/FieldMeta import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector'; import { FieldMetadataType } from '~/generated-metadata/graphql'; +import { FieldContext } from '@/object-record/record-field/contexts/FieldContext'; +import { assertFieldMetadata } from '@/object-record/record-field/types/guards/assertFieldMetadata'; +import { isFieldRelation } from '@/object-record/record-field/types/guards/isFieldRelation'; import { ObjectRecord } from '@/object-record/types/ObjectRecord'; -import { FieldContext } from '../../contexts/FieldContext'; -import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata'; -import { isFieldRelation } from '../../types/guards/isFieldRelation'; export const useRelationField = () => { const { recordId, fieldDefinition, maxWidth } = useContext(FieldContext); diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRelationToOneFieldDisplay.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRelationToOneFieldDisplay.ts index 3adbd6d02..ab82d3471 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRelationToOneFieldDisplay.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRelationToOneFieldDisplay.ts @@ -8,9 +8,9 @@ import { FIELD_EDIT_BUTTON_WIDTH } from '@/ui/field/display/constants/FieldEditB import { FieldMetadataType } from '~/generated-metadata/graphql'; import { generateDefaultRecordChipData } from '@/object-metadata/utils/generateDefaultRecordChipData'; -import { FieldContext } from '../../contexts/FieldContext'; -import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata'; -import { isFieldRelation } from '../../types/guards/isFieldRelation'; +import { FieldContext } from '@/object-record/record-field/contexts/FieldContext'; +import { assertFieldMetadata } from '@/object-record/record-field/types/guards/assertFieldMetadata'; +import { isFieldRelation } from '@/object-record/record-field/types/guards/isFieldRelation'; import { isDefined } from 'twenty-shared/utils'; export const useRelationToOneFieldDisplay = () => { diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRichTextField.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRichTextField.ts index 43dc3c740..c17240071 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRichTextField.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRichTextField.ts @@ -15,8 +15,7 @@ import { FieldContext } from '../../contexts/FieldContext'; import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata'; export const useRichTextField = () => { - const { recordId, fieldDefinition, hotkeyScope, maxWidth } = - useContext(FieldContext); + const { recordId, fieldDefinition, maxWidth } = useContext(FieldContext); assertFieldMetadata( FieldMetadataType.RICH_TEXT, @@ -62,7 +61,6 @@ export const useRichTextField = () => { fieldDefinition, fieldValue: fieldRichTextValue, setFieldValue, - hotkeyScope, persistRichTextField, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRichTextFieldDisplay.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRichTextFieldDisplay.ts index e820981bc..4af49ae07 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRichTextFieldDisplay.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRichTextFieldDisplay.ts @@ -11,7 +11,7 @@ import { parseJson } from '~/utils/parseJson'; import { FieldContext } from '../../contexts/FieldContext'; export const useRichTextFieldDisplay = () => { - const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext); + const { recordId, fieldDefinition } = useContext(FieldContext); assertFieldMetadata( FieldMetadataType.RICH_TEXT, @@ -31,6 +31,5 @@ export const useRichTextFieldDisplay = () => { return { fieldDefinition, fieldValue: fieldValueParsed, - hotkeyScope, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRichTextV2Field.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRichTextV2Field.ts index 2303329f2..3941dbc8e 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRichTextV2Field.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRichTextV2Field.ts @@ -18,8 +18,7 @@ import { FieldContext } from '../../contexts/FieldContext'; import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata'; export const useRichTextV2Field = () => { - const { recordId, fieldDefinition, hotkeyScope, maxWidth } = - useContext(FieldContext); + const { recordId, fieldDefinition, maxWidth } = useContext(FieldContext); assertFieldMetadata( FieldMetadataType.RICH_TEXT_V2, @@ -67,7 +66,6 @@ export const useRichTextV2Field = () => { fieldDefinition, fieldValue: fieldRichTextV2Value, setFieldValue, - hotkeyScope, persistRichTextField, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRichTextV2FieldDisplay.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRichTextV2FieldDisplay.ts index ad79f345f..1334ceaa9 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRichTextV2FieldDisplay.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useRichTextV2FieldDisplay.ts @@ -9,7 +9,7 @@ import { FieldMetadataType } from '~/generated-metadata/graphql'; import { FieldContext } from '../../contexts/FieldContext'; export const useRichTextV2FieldDisplay = () => { - const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext); + const { recordId, fieldDefinition } = useContext(FieldContext); assertFieldMetadata( FieldMetadataType.RICH_TEXT_V2, @@ -27,6 +27,5 @@ export const useRichTextV2FieldDisplay = () => { return { fieldDefinition, fieldValue, - hotkeyScope, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useSelectField.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useSelectField.ts index 4c67b3fdd..1f31ad69a 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useSelectField.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useSelectField.ts @@ -13,7 +13,7 @@ import { isFieldSelect } from '../../types/guards/isFieldSelect'; import { isFieldSelectValue } from '../../types/guards/isFieldSelectValue'; export const useSelectField = () => { - const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext); + const { recordId, fieldDefinition } = useContext(FieldContext); assertFieldMetadata(FieldMetadataType.SELECT, isFieldSelect, fieldDefinition); @@ -40,6 +40,5 @@ export const useSelectField = () => { draftValue, setDraftValue, setFieldValue, - hotkeyScope, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useTextField.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useTextField.ts index 4236f0403..f4b1fb8b9 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useTextField.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useTextField.ts @@ -1,19 +1,17 @@ import { useContext } from 'react'; import { useRecoilState, useRecoilValue } from 'recoil'; +import { FieldContext } from '@/object-record/record-field/contexts/FieldContext'; import { useRecordFieldInput } from '@/object-record/record-field/hooks/useRecordFieldInput'; import { FieldTextValue } from '@/object-record/record-field/types/FieldMetadata'; +import { assertFieldMetadata } from '@/object-record/record-field/types/guards/assertFieldMetadata'; +import { isFieldText } from '@/object-record/record-field/types/guards/isFieldText'; +import { isFieldTextValue } from '@/object-record/record-field/types/guards/isFieldTextValue'; import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector'; import { FieldMetadataType } from '~/generated-metadata/graphql'; -import { FieldContext } from '../../contexts/FieldContext'; -import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata'; -import { isFieldText } from '../../types/guards/isFieldText'; -import { isFieldTextValue } from '../../types/guards/isFieldTextValue'; - export const useTextField = () => { - const { recordId, fieldDefinition, hotkeyScope, maxWidth } = - useContext(FieldContext); + const { recordId, fieldDefinition, maxWidth } = useContext(FieldContext); assertFieldMetadata(FieldMetadataType.TEXT, isFieldText, fieldDefinition); @@ -39,6 +37,5 @@ export const useTextField = () => { fieldDefinition, fieldValue: fieldTextValue, setFieldValue, - hotkeyScope, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useTextFieldDisplay.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useTextFieldDisplay.ts index 259d846c4..30f10e93c 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useTextFieldDisplay.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useTextFieldDisplay.ts @@ -5,7 +5,7 @@ import { useRecordFieldValue } from '@/object-record/record-store/contexts/Recor import { FieldContext } from '../../contexts/FieldContext'; export const useTextFieldDisplay = () => { - const { recordId, fieldDefinition, hotkeyScope, displayedMaxRows } = + const { recordId, fieldDefinition, displayedMaxRows } = useContext(FieldContext); const fieldName = fieldDefinition.metadata.fieldName; @@ -16,7 +16,6 @@ export const useTextFieldDisplay = () => { return { fieldDefinition, fieldValue, - hotkeyScope, displayedMaxRows, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useUuidField.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useUuidField.ts index 6fdc5a667..f5037da70 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useUuidField.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/useUuidField.ts @@ -1,17 +1,16 @@ import { useContext } from 'react'; import { useRecoilState } from 'recoil'; +import { FieldContext } from '@/object-record/record-field/contexts/FieldContext'; import { FieldUUidValue } from '@/object-record/record-field/types/FieldMetadata'; +import { assertFieldMetadata } from '@/object-record/record-field/types/guards/assertFieldMetadata'; +import { isFieldTextValue } from '@/object-record/record-field/types/guards/isFieldTextValue'; import { isFieldUuid } from '@/object-record/record-field/types/guards/isFieldUuid'; import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector'; import { FieldMetadataType } from '~/generated-metadata/graphql'; -import { FieldContext } from '../../contexts/FieldContext'; -import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata'; -import { isFieldTextValue } from '../../types/guards/isFieldTextValue'; - export const useUuidField = () => { - const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext); + const { recordId, fieldDefinition } = useContext(FieldContext); assertFieldMetadata(FieldMetadataType.UUID, isFieldUuid, fieldDefinition); @@ -29,6 +28,5 @@ export const useUuidField = () => { fieldDefinition, fieldValue: fieldTextValue, setFieldValue, - hotkeyScope, }; }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/AddressFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/AddressFieldInput.tsx index 5bad47db2..5c0412ecf 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/AddressFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/AddressFieldInput.tsx @@ -6,6 +6,7 @@ import { FieldInputClickOutsideEvent, FieldInputEvent, } from '@/object-record/record-field/types/FieldInputEvent'; +import { DEFAULT_CELL_SCOPE } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2'; import { usePersistField } from '../../../hooks/usePersistField'; export type AddressFieldInputProps = { @@ -23,7 +24,7 @@ export const AddressFieldInput = ({ onTab, onShiftTab, }: AddressFieldInputProps) => { - const { hotkeyScope, draftValue, setDraftValue } = useAddressField(); + const { draftValue, setDraftValue } = useAddressField(); const persistField = usePersistField(); @@ -75,7 +76,7 @@ export const AddressFieldInput = ({ onClickOutside={handleClickOutside} onEnter={handleEnter} onEscape={handleEscape} - hotkeyScope={hotkeyScope} + hotkeyScope={DEFAULT_CELL_SCOPE.scope} onChange={handleChange} onTab={handleTab} onShiftTab={handleShiftTab} diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/ArrayFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/ArrayFieldInput.tsx index b252590ce..a0bda908c 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/ArrayFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/ArrayFieldInput.tsx @@ -1,6 +1,7 @@ import { useArrayField } from '@/object-record/record-field/meta-types/hooks/useArrayField'; import { ArrayFieldMenuItem } from '@/object-record/record-field/meta-types/input/components/ArrayFieldMenuItem'; import { MultiItemFieldInput } from '@/object-record/record-field/meta-types/input/components/MultiItemFieldInput'; +import { DEFAULT_CELL_SCOPE } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2'; import { useMemo } from 'react'; import { FieldMetadataType } from '~/generated-metadata/graphql'; @@ -13,7 +14,7 @@ export const ArrayFieldInput = ({ onCancel, onClickOutside, }: ArrayFieldInputProps) => { - const { persistArrayField, hotkeyScope, fieldValue } = useArrayField(); + const { persistArrayField, fieldValue, fieldDefinition } = useArrayField(); const arrayItems = useMemo>( () => (Array.isArray(fieldValue) ? fieldValue : []), @@ -22,7 +23,7 @@ export const ArrayFieldInput = ({ return ( ( { - const { - hotkeyScope, - draftValue, - persistCurrencyField, - setDraftValue, - defaultValue, - } = useCurrencyField(); + const { draftValue, persistCurrencyField, setDraftValue, defaultValue } = + useCurrencyField(); const defaultCurrencyCodeWithoutSQLQuotes = ( defaultValue as FieldCurrencyValue @@ -129,7 +125,7 @@ export const CurrencyFieldInput = ({ onTab={handleTab} onChange={handleChange} onSelect={handleSelect} - hotkeyScope={hotkeyScope} + hotkeyScope={DEFAULT_CELL_SCOPE.scope} /> ); }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/DateFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/DateFieldInput.tsx index f5655c71a..4443bef60 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/DateFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/DateFieldInput.tsx @@ -2,9 +2,10 @@ import { useDateField } from '@/object-record/record-field/meta-types/hooks/useD import { DateInput } from '@/ui/field/input/components/DateInput'; import { FieldInputClickOutsideEvent } from '@/object-record/record-field/types/FieldInputEvent'; +import { DEFAULT_CELL_SCOPE } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2'; import { isDefined } from 'twenty-shared/utils'; -import { usePersistField } from '../../../hooks/usePersistField'; import { Nullable } from 'twenty-ui/utilities'; +import { usePersistField } from '../../../hooks/usePersistField'; type FieldInputEvent = (persist: () => void) => void; @@ -23,7 +24,7 @@ export const DateFieldInput = ({ onClear, onSubmit, }: DateFieldInputProps) => { - const { fieldValue, setDraftValue, hotkeyScope } = useDateField(); + const { fieldValue, setDraftValue } = useDateField(); const persistField = usePersistField(); @@ -80,7 +81,7 @@ export const DateFieldInput = ({ onChange={handleChange} onClear={handleClear} onSubmit={handleSubmit} - hotkeyScope={hotkeyScope} + hotkeyScope={DEFAULT_CELL_SCOPE.scope} /> ); }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/DateTimeFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/DateTimeFieldInput.tsx index bbeaab903..40a23518d 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/DateTimeFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/DateTimeFieldInput.tsx @@ -3,9 +3,10 @@ import { DateInput } from '@/ui/field/input/components/DateInput'; import { FieldInputEvent } from '@/object-record/record-field/meta-types/input/components/NumberFieldInput'; import { FieldInputClickOutsideEvent } from '@/object-record/record-field/types/FieldInputEvent'; +import { DEFAULT_CELL_SCOPE } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2'; +import { Nullable } from 'twenty-ui/utilities'; import { usePersistField } from '../../../hooks/usePersistField'; import { useDateTimeField } from '../../hooks/useDateTimeField'; -import { Nullable } from 'twenty-ui/utilities'; export type DateTimeFieldInputProps = { onClickOutside?: FieldInputClickOutsideEvent; @@ -22,7 +23,7 @@ export const DateTimeFieldInput = ({ onClear, onSubmit, }: DateTimeFieldInputProps) => { - const { fieldValue, setDraftValue, hotkeyScope } = useDateTimeField(); + const { fieldValue, setDraftValue } = useDateTimeField(); const persistField = usePersistField(); @@ -76,7 +77,7 @@ export const DateTimeFieldInput = ({ isDateTimeInput onClear={handleClear} onSubmit={handleSubmit} - hotkeyScope={hotkeyScope} + hotkeyScope={DEFAULT_CELL_SCOPE.scope} /> ); }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/EmailsFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/EmailsFieldInput.tsx index dd40ed7e5..99371d125 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/EmailsFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/EmailsFieldInput.tsx @@ -2,6 +2,7 @@ import { useEmailsField } from '@/object-record/record-field/meta-types/hooks/us import { EmailsFieldMenuItem } from '@/object-record/record-field/meta-types/input/components/EmailsFieldMenuItem'; import { recordFieldInputIsFieldInErrorComponentState } from '@/object-record/record-field/states/recordFieldInputIsFieldInErrorComponentState'; import { emailSchema } from '@/object-record/record-field/validation-schemas/emailSchema'; +import { DEFAULT_CELL_SCOPE } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2'; import { useSetRecoilComponentStateV2 } from '@/ui/utilities/state/component-state/hooks/useSetRecoilComponentStateV2'; import { useCallback, useMemo } from 'react'; import { isDefined } from 'twenty-shared/utils'; @@ -17,7 +18,7 @@ export const EmailsFieldInput = ({ onCancel, onClickOutside, }: EmailsFieldInputProps) => { - const { persistEmailsField, hotkeyScope, fieldValue } = useEmailsField(); + const { persistEmailsField, fieldValue } = useEmailsField(); const emails = useMemo( () => @@ -75,7 +76,7 @@ export const EmailsFieldInput = ({ }) => ( )} onError={handleError} - hotkeyScope={hotkeyScope} + hotkeyScope={DEFAULT_CELL_SCOPE.scope} /> ); }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/FullNameFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/FullNameFieldInput.tsx index a956760b8..a60baa1cb 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/FullNameFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/FullNameFieldInput.tsx @@ -25,7 +25,7 @@ export const FullNameFieldInput = ({ onTab, onShiftTab, }: FullNameFieldInputProps) => { - const { hotkeyScope, draftValue, setDraftValue, persistFullNameField } = + const { draftValue, setDraftValue, persistFullNameField, fieldDefinition } = useFullNameField(); const convertToFullName = (newDoubleText: FieldDoubleText) => { @@ -93,7 +93,7 @@ export const FullNameFieldInput = ({ onShiftTab={handleShiftTab} onTab={handleTab} onPaste={handlePaste} - hotkeyScope={hotkeyScope} + hotkeyScope={`full-name-field-input-${fieldDefinition.metadata.fieldName}`} onChange={handleChange} /> ); diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/LinksFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/LinksFieldInput.tsx index a15af0f12..8b505b125 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/LinksFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/LinksFieldInput.tsx @@ -1,6 +1,7 @@ import { useLinksField } from '@/object-record/record-field/meta-types/hooks/useLinksField'; import { LinksFieldMenuItem } from '@/object-record/record-field/meta-types/input/components/LinksFieldMenuItem'; import { recordFieldInputIsFieldInErrorComponentState } from '@/object-record/record-field/states/recordFieldInputIsFieldInErrorComponentState'; +import { DEFAULT_CELL_SCOPE } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2'; import { useSetRecoilComponentStateV2 } from '@/ui/utilities/state/component-state/hooks/useSetRecoilComponentStateV2'; import { useMemo } from 'react'; import { absoluteUrlSchema, isDefined } from 'twenty-shared/utils'; @@ -16,7 +17,7 @@ export const LinksFieldInput = ({ onCancel, onClickOutside, }: LinksFieldInputProps) => { - const { persistLinksField, hotkeyScope, fieldValue } = useLinksField(); + const { persistLinksField, fieldValue, fieldDefinition } = useLinksField(); const links = useMemo<{ url: string; label: string }[]>( () => @@ -83,7 +84,7 @@ export const LinksFieldInput = ({ }) => ( )} - hotkeyScope={hotkeyScope} + hotkeyScope={DEFAULT_CELL_SCOPE.scope} /> ); }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/MultiSelectFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/MultiSelectFieldInput.tsx index be8c2a57d..b21ac8379 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/MultiSelectFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/MultiSelectFieldInput.tsx @@ -1,5 +1,6 @@ import { useMultiSelectField } from '@/object-record/record-field/meta-types/hooks/useMultiSelectField'; import { SELECT_FIELD_INPUT_SELECTABLE_LIST_COMPONENT_INSTANCE_ID } from '@/object-record/record-field/meta-types/input/constants/SelectFieldInputSelectableListComponentInstanceId'; +import { DEFAULT_CELL_SCOPE } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2'; import { MultiSelectInput } from '@/ui/field/input/components/MultiSelectInput'; type MultiSelectFieldInputProps = { @@ -9,15 +10,14 @@ type MultiSelectFieldInputProps = { export const MultiSelectFieldInput = ({ onCancel, }: MultiSelectFieldInputProps) => { - const { persistField, fieldDefinition, fieldValues, hotkeyScope } = - useMultiSelectField(); + const { persistField, fieldDefinition, fieldValues } = useMultiSelectField(); return ( { - const { - fieldDefinition, - draftValue, - setDraftValue, - hotkeyScope, - persistNumberField, - } = useNumberField(); + const { fieldDefinition, draftValue, setDraftValue, persistNumberField } = + useNumberField(); const handleEnter = (newText: string) => { onEnter?.(() => persistNumberField(newText)); @@ -67,7 +63,7 @@ export const NumberFieldInput = ({ onEscape={handleEscape} onShiftTab={handleShiftTab} onTab={handleTab} - hotkeyScope={hotkeyScope} + hotkeyScope={DEFAULT_CELL_SCOPE.scope} onChange={handleChange} /> diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/PhonesFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/PhonesFieldInput.tsx index 346f89bd3..fa831296b 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/PhonesFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/PhonesFieldInput.tsx @@ -9,11 +9,12 @@ import { MultiItemFieldInput } from './MultiItemFieldInput'; import { createPhonesFromFieldValue } from '@/object-record/record-field/meta-types/input/utils/phonesUtils'; import { FieldInputClickOutsideEvent } from '@/object-record/record-field/types/FieldInputEvent'; +import { DEFAULT_CELL_SCOPE } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2'; import { PhoneCountryPickerDropdownButton } from '@/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownButton'; import { css } from '@emotion/react'; +import { TEXT_INPUT_STYLE } from 'twenty-ui/theme'; import { FieldMetadataType } from '~/generated-metadata/graphql'; import { stripSimpleQuotesFromString } from '~/utils/string/stripSimpleQuotesFromString'; -import { TEXT_INPUT_STYLE } from 'twenty-ui/theme'; export const DEFAULT_PHONE_CALLING_CODE = '1'; @@ -69,8 +70,7 @@ export const PhonesFieldInput = ({ onCancel, onClickOutside, }: PhonesFieldInputProps) => { - const { persistPhonesField, hotkeyScope, fieldValue, fieldDefinition } = - usePhonesField(); + const { persistPhonesField, fieldValue, fieldDefinition } = usePhonesField(); const phones = createPhonesFromFieldValue(fieldValue); @@ -128,7 +128,7 @@ export const PhonesFieldInput = ({ }) => ( ); }} - hotkeyScope={hotkeyScope} + hotkeyScope={DEFAULT_CELL_SCOPE.scope} /> ); }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/RawJsonFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/RawJsonFieldInput.tsx index 57a138d06..0e48721c0 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/RawJsonFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/RawJsonFieldInput.tsx @@ -4,6 +4,7 @@ import { FieldInputClickOutsideEvent, FieldInputEvent, } from '@/object-record/record-field/types/FieldInputEvent'; +import { DEFAULT_CELL_SCOPE } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2'; import { useJsonField } from '../../hooks/useJsonField'; type RawJsonFieldInputProps = { @@ -21,13 +22,8 @@ export const RawJsonFieldInput = ({ onTab, onShiftTab, }: RawJsonFieldInputProps) => { - const { - fieldDefinition, - draftValue, - hotkeyScope, - setDraftValue, - persistJsonField, - } = useJsonField(); + const { fieldDefinition, draftValue, setDraftValue, persistJsonField } = + useJsonField(); const handleEnter = (newText: string) => { onEnter?.(() => persistJsonField(newText)); @@ -66,7 +62,7 @@ export const RawJsonFieldInput = ({ onEscape={handleEscape} onShiftTab={handleShiftTab} onTab={handleTab} - hotkeyScope={hotkeyScope} + hotkeyScope={DEFAULT_CELL_SCOPE.scope} onChange={handleChange} maxRows={25} /> diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/RichTextFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/RichTextFieldInput.tsx index 5bc37525e..2cbc0ba19 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/RichTextFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/RichTextFieldInput.tsx @@ -3,6 +3,7 @@ import { FieldContext } from '@/object-record/record-field/contexts/FieldContext import { useRichTextField } from '@/object-record/record-field/meta-types/hooks/useRichTextField'; import { useRegisterInputEvents } from '@/object-record/record-field/meta-types/input/hooks/useRegisterInputEvents'; import { FieldInputClickOutsideEvent } from '@/object-record/record-field/types/FieldInputEvent'; +import { DEFAULT_CELL_SCOPE } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2'; import { BlockEditor } from '@/ui/input/editor/components/BlockEditor'; import { BlockEditorComponentInstanceContext } from '@/ui/input/editor/contexts/BlockEditorCompoponeInstanceContext'; import { PartialBlock } from '@blocknote/core'; @@ -27,7 +28,7 @@ export const RichTextFieldInput = ({ }: RichTextFieldInputProps) => { const containerRef = useRef(null); const { recordId } = useContext(FieldContext); - const { draftValue, hotkeyScope, persistRichTextField, fieldDefinition } = + const { draftValue, persistRichTextField, fieldDefinition } = useRichTextField(); const editor = useCreateBlockNote({ @@ -44,7 +45,7 @@ export const RichTextFieldInput = ({ inputRef: containerRef, inputValue: draftValue, onClickOutside: handleClickOutside, - hotkeyScope, + hotkeyScope: DEFAULT_CELL_SCOPE.scope, }); return ( diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/SelectFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/SelectFieldInput.tsx index 6268aaaca..69d551394 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/SelectFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/SelectFieldInput.tsx @@ -2,6 +2,7 @@ import { useClearField } from '@/object-record/record-field/hooks/useClearField' import { useSelectField } from '@/object-record/record-field/meta-types/hooks/useSelectField'; import { SELECT_FIELD_INPUT_SELECTABLE_LIST_COMPONENT_INSTANCE_ID } from '@/object-record/record-field/meta-types/input/constants/SelectFieldInputSelectableListComponentInstanceId'; import { FieldInputEvent } from '@/object-record/record-field/types/FieldInputEvent'; +import { DEFAULT_CELL_SCOPE } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2'; import { SelectInput } from '@/ui/field/input/components/SelectInput'; import { useSelectableList } from '@/ui/layout/selectable-list/hooks/useSelectableList'; import { useScopedHotkeys } from '@/ui/utilities/hotkey/hooks/useScopedHotkeys'; @@ -19,8 +20,7 @@ export const SelectFieldInput = ({ onSubmit, onCancel, }: SelectFieldInputProps) => { - const { persistField, fieldDefinition, fieldValue, hotkeyScope } = - useSelectField(); + const { persistField, fieldDefinition, fieldValue } = useSelectField(); const [filteredOptions, setFilteredOptions] = useState([]); @@ -50,7 +50,7 @@ export const SelectFieldInput = ({ onCancel?.(); resetSelectedItem(); }, - hotkeyScope, + `select-field-input-${fieldDefinition.metadata.fieldName}`, [onCancel, resetSelectedItem], ); @@ -65,7 +65,7 @@ export const SelectFieldInput = ({ SELECT_FIELD_INPUT_SELECTABLE_LIST_COMPONENT_INSTANCE_ID } selectableItemIdArray={optionIds} - hotkeyScope={hotkeyScope} + hotkeyScope={DEFAULT_CELL_SCOPE.scope} onEnter={(itemId) => { const option = filteredOptions.find( (option) => option.value === itemId, diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/TextFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/TextFieldInput.tsx index 411711f93..6542cd578 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/TextFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/TextFieldInput.tsx @@ -7,6 +7,7 @@ import { FieldInputClickOutsideEvent, FieldInputEvent, } from '@/object-record/record-field/types/FieldInputEvent'; +import { DEFAULT_CELL_SCOPE } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2'; import { FieldInputContainer } from '@/ui/field/input/components/FieldInputContainer'; import { turnIntoUndefinedIfWhitespacesOnly } from '~/utils/string/turnIntoUndefinedIfWhitespacesOnly'; @@ -25,8 +26,7 @@ export const TextFieldInput = ({ onTab, onShiftTab, }: TextFieldInputProps) => { - const { fieldDefinition, draftValue, hotkeyScope, setDraftValue } = - useTextField(); + const { fieldDefinition, draftValue, setDraftValue } = useTextField(); const persistField = usePersistField(); const handleEnter = (newText: string) => { @@ -67,7 +67,7 @@ export const TextFieldInput = ({ onEscape={handleEscape} onShiftTab={handleShiftTab} onTab={handleTab} - hotkeyScope={hotkeyScope} + hotkeyScope={DEFAULT_CELL_SCOPE.scope} onChange={handleChange} /> diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/AddressFieldInput.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/AddressFieldInput.stories.tsx index 076422aa7..11c9253d7 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/AddressFieldInput.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/AddressFieldInput.stories.tsx @@ -6,6 +6,7 @@ import { FieldContext } from '@/object-record/record-field/contexts/FieldContext import { useAddressField } from '@/object-record/record-field/meta-types/hooks/useAddressField'; import { RecordFieldComponentInstanceContext } from '@/object-record/record-field/states/contexts/RecordFieldComponentInstanceContext'; import { FieldAddressDraftValue } from '@/object-record/record-field/types/FieldInputDraftValue'; +import { DEFAULT_CELL_SCOPE } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2'; import { getRecordFieldInputId } from '@/object-record/utils/getRecordFieldInputId'; import { AddressInput, @@ -45,7 +46,7 @@ const AddressInputWithContext = ({ const setHotKeyScope = useSetHotkeyScope(); useEffect(() => { - setHotKeyScope('hotkey-scope'); + setHotKeyScope(DEFAULT_CELL_SCOPE.scope); }, [setHotKeyScope]); return ( @@ -73,7 +74,6 @@ const AddressInputWithContext = ({ }, }, recordId: recordId ?? '123', - hotkeyScope: 'hotkey-scope', isLabelIdentifier: false, isReadOnly: false, }} @@ -84,7 +84,7 @@ const AddressInputWithContext = ({ onEscape={onEscape} onClickOutside={onClickOutside} value={value} - hotkeyScope="hotkey-scope" + hotkeyScope={DEFAULT_CELL_SCOPE.scope} onTab={onTab} onShiftTab={onShiftTab} /> diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/BooleanFieldInput.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/BooleanFieldInput.stories.tsx index e72b09cd0..4e60fa5ec 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/BooleanFieldInput.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/BooleanFieldInput.stories.tsx @@ -64,7 +64,6 @@ const BooleanFieldInputWithContext = ({ }, }, recordId: recordId ?? '123', - hotkeyScope: 'hotkey-scope', isLabelIdentifier: false, isReadOnly: false, }} diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/DateTimeFieldInput.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/DateTimeFieldInput.stories.tsx index 2d34bc466..b592bb968 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/DateTimeFieldInput.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/DateTimeFieldInput.stories.tsx @@ -7,6 +7,7 @@ import { FieldMetadataType } from '~/generated/graphql'; import { FieldContext } from '@/object-record/record-field/contexts/FieldContext'; import { RecordFieldComponentInstanceContext } from '@/object-record/record-field/states/contexts/RecordFieldComponentInstanceContext'; +import { DEFAULT_CELL_SCOPE } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2'; import { getRecordFieldInputId } from '@/object-record/utils/getRecordFieldInputId'; import { StorybookFieldInputDropdownFocusIdSetterEffect } from '~/testing/components/StorybookFieldInputDropdownFocusIdSetterEffect'; import { useDateTimeField } from '../../../hooks/useDateTimeField'; @@ -64,7 +65,7 @@ const DateFieldInputWithContext = ({ const setHotkeyScope = useSetHotkeyScope(); useEffect(() => { - setHotkeyScope('hotkey-scope'); + setHotkeyScope(DEFAULT_CELL_SCOPE.scope); }, [setHotkeyScope]); return ( @@ -91,7 +92,6 @@ const DateFieldInputWithContext = ({ }, }, recordId: '123', - hotkeyScope: 'hotkey-scope', isLabelIdentifier: false, isReadOnly: false, }} diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/NumberFieldInput.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/NumberFieldInput.stories.tsx index 28de98428..eb4dfcc07 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/NumberFieldInput.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/NumberFieldInput.stories.tsx @@ -8,6 +8,7 @@ import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; import { FieldContext } from '@/object-record/record-field/contexts/FieldContext'; import { RecordFieldComponentInstanceContext } from '@/object-record/record-field/states/contexts/RecordFieldComponentInstanceContext'; +import { DEFAULT_CELL_SCOPE } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2'; import { getRecordFieldInputId } from '@/object-record/utils/getRecordFieldInputId'; import { StorybookFieldInputDropdownFocusIdSetterEffect } from '~/testing/components/StorybookFieldInputDropdownFocusIdSetterEffect'; import { I18nFrontDecorator } from '~/testing/decorators/I18nFrontDecorator'; @@ -41,7 +42,7 @@ const NumberFieldInputWithContext = ({ const setHotKeyScope = useSetHotkeyScope(); useEffect(() => { - setHotKeyScope('hotkey-scope'); + setHotKeyScope(DEFAULT_CELL_SCOPE.scope); }, [setHotKeyScope]); return ( @@ -68,7 +69,6 @@ const NumberFieldInputWithContext = ({ }, }, recordId: '123', - hotkeyScope: 'hotkey-scope', isLabelIdentifier: false, isReadOnly: false, }} diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/RatingFieldInput.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/RatingFieldInput.stories.tsx index 8fb65b8fd..b044df4c0 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/RatingFieldInput.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/RatingFieldInput.stories.tsx @@ -6,6 +6,7 @@ import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope import { FieldContext } from '@/object-record/record-field/contexts/FieldContext'; import { RecordFieldComponentInstanceContext } from '@/object-record/record-field/states/contexts/RecordFieldComponentInstanceContext'; +import { DEFAULT_CELL_SCOPE } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2'; import { getRecordFieldInputId } from '@/object-record/utils/getRecordFieldInputId'; import { FieldMetadataType } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; @@ -40,7 +41,7 @@ const RatingFieldInputWithContext = ({ const setHotKeyScope = useSetHotkeyScope(); useEffect(() => { - setHotKeyScope('hotkey-scope'); + setHotKeyScope(DEFAULT_CELL_SCOPE.scope); }, [setHotKeyScope]); return ( @@ -66,7 +67,6 @@ const RatingFieldInputWithContext = ({ }, }, recordId: recordId ?? '123', - hotkeyScope: 'hotkey-scope', isLabelIdentifier: false, isReadOnly: false, }} diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/RelationFromManyFieldInput.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/RelationFromManyFieldInput.stories.tsx index b2cc54fbe..5e2c1eab0 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/RelationFromManyFieldInput.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/RelationFromManyFieldInput.stories.tsx @@ -19,6 +19,7 @@ import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSi import { FieldContext } from '@/object-record/record-field/contexts/FieldContext'; import { useOpenFieldInputEditMode } from '@/object-record/record-field/hooks/useOpenFieldInputEditMode'; import { RecordFieldComponentInstanceContext } from '@/object-record/record-field/states/contexts/RecordFieldComponentInstanceContext'; +import { MultipleRecordPickerHotkeyScope } from '@/object-record/record-picker/multiple-record-picker/types/MultipleRecordPickerHotkeyScope'; import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector'; import { FieldMetadataType } from 'twenty-shared/types'; import { RelationDefinitionType } from '~/generated-metadata/graphql'; @@ -70,7 +71,7 @@ const RelationManyFieldInputWithContext = () => { useEffect(() => { setRecordStoreFieldValue([]); - setHotKeyScope('hotkey-scope'); + setHotKeyScope(MultipleRecordPickerHotkeyScope.MultipleRecordPicker); openFieldInput({ fieldDefinition, recordId: 'recordId', @@ -93,7 +94,6 @@ const RelationManyFieldInputWithContext = () => { value={{ fieldDefinition, recordId: 'recordId', - hotkeyScope: 'hotkey-scope', isLabelIdentifier: false, isReadOnly: false, }} diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/RelationToOneFieldInput.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/RelationToOneFieldInput.stories.tsx index 2fc80c512..a02898ab6 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/RelationToOneFieldInput.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/RelationToOneFieldInput.stories.tsx @@ -19,13 +19,14 @@ import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSi import { FieldContext } from '@/object-record/record-field/contexts/FieldContext'; import { RecordFieldComponentInstanceContext } from '@/object-record/record-field/states/contexts/RecordFieldComponentInstanceContext'; import { recordFieldInputLayoutDirectionLoadingComponentState } from '@/object-record/record-field/states/recordFieldInputLayoutDirectionLoadingComponentState'; +import { SingleRecordPickerHotkeyScope } from '@/object-record/record-picker/single-record-picker/types/SingleRecordPickerHotkeyScope'; import { useSetRecoilComponentStateV2 } from '@/ui/utilities/state/component-state/hooks/useSetRecoilComponentStateV2'; import { FieldMetadataType } from 'twenty-shared/types'; +import { getCanvasElementForDropdownTesting } from 'twenty-ui/testing'; import { RelationToOneFieldInput, RelationToOneFieldInputProps, } from '../RelationToOneFieldInput'; -import { getCanvasElementForDropdownTesting } from 'twenty-ui/testing'; const RelationWorkspaceSetterEffect = () => { const setCurrentWorkspace = useSetRecoilState(currentWorkspaceState); @@ -64,7 +65,7 @@ const RelationToOneFieldInputWithContext = ({ const setHotKeyScope = useSetHotkeyScope(); useEffect(() => { - setHotKeyScope('hotkey-scope'); + setHotKeyScope(SingleRecordPickerHotkeyScope.SingleRecordPicker); }, [setHotKeyScope]); return ( @@ -86,7 +87,6 @@ const RelationToOneFieldInputWithContext = ({ }, }, recordId: recordId, - hotkeyScope: 'hotkey-scope', isLabelIdentifier: false, isReadOnly: false, }} diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/TextFieldInput.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/TextFieldInput.stories.tsx index 76ad8dfc6..480354cc5 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/TextFieldInput.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/TextFieldInput.stories.tsx @@ -5,6 +5,7 @@ import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope import { FieldContext } from '@/object-record/record-field/contexts/FieldContext'; import { RecordFieldComponentInstanceContext } from '@/object-record/record-field/states/contexts/RecordFieldComponentInstanceContext'; +import { DEFAULT_CELL_SCOPE } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2'; import { Decorator, Meta, StoryObj } from '@storybook/react'; import { FieldMetadataType } from '~/generated/graphql'; import { StorybookFieldInputDropdownFocusIdSetterEffect } from '~/testing/components/StorybookFieldInputDropdownFocusIdSetterEffect'; @@ -39,7 +40,7 @@ const TextFieldInputWithContext = ({ const setHotKeyScope = useSetHotkeyScope(); useEffect(() => { - setHotKeyScope('hotkey-scope'); + setHotKeyScope(DEFAULT_CELL_SCOPE.scope); }, [setHotKeyScope]); return ( @@ -61,7 +62,6 @@ const TextFieldInputWithContext = ({ objectMetadataNameSingular: 'person', }, }, - hotkeyScope: 'hotkey-scope', isLabelIdentifier: false, isReadOnly: false, }} diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/hooks/useOpenRelationFromManyFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/hooks/useOpenRelationFromManyFieldInput.tsx index c83cf9f69..ea45fbaae 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/hooks/useOpenRelationFromManyFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/hooks/useOpenRelationFromManyFieldInput.tsx @@ -6,14 +6,18 @@ import { import { useMultipleRecordPickerPerformSearch } from '@/object-record/record-picker/multiple-record-picker/hooks/useMultipleRecordPickerPerformSearch'; import { multipleRecordPickerPickableMorphItemsComponentState } from '@/object-record/record-picker/multiple-record-picker/states/multipleRecordPickerPickableMorphItemsComponentState'; import { multipleRecordPickerSearchableObjectMetadataItemsComponentState } from '@/object-record/record-picker/multiple-record-picker/states/multipleRecordPickerSearchableObjectMetadataItemsComponentState'; +import { MultipleRecordPickerHotkeyScope } from '@/object-record/record-picker/multiple-record-picker/types/MultipleRecordPickerHotkeyScope'; import { RecordPickerPickableMorphItem } from '@/object-record/record-picker/types/RecordPickerPickableMorphItem'; import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState'; import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector'; +import { usePreviousHotkeyScope } from '@/ui/utilities/hotkey/hooks/usePreviousHotkeyScope'; import { useRecoilCallback } from 'recoil'; export const useOpenRelationFromManyFieldInput = () => { const { performSearch } = useMultipleRecordPickerPerformSearch(); + const { setHotkeyScopeAndMemorizePreviousScope } = usePreviousHotkeyScope(); + const openRelationFromManyFieldInput = useRecoilCallback( ({ set, snapshot }) => ({ @@ -83,8 +87,12 @@ export const useOpenRelationFromManyFieldInput = () => { forceSearchableObjectMetadataItems: [objectMetadataItem], forcePickableMorphItems: pickableMorphItems, }); + + setHotkeyScopeAndMemorizePreviousScope( + MultipleRecordPickerHotkeyScope.MultipleRecordPicker, + ); }, - [performSearch], + [performSearch, setHotkeyScopeAndMemorizePreviousScope], ); return { openRelationFromManyFieldInput }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/hooks/useOpenRelationToOneFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/hooks/useOpenRelationToOneFieldInput.tsx index 7782a6e0e..27534386f 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/hooks/useOpenRelationToOneFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/hooks/useOpenRelationToOneFieldInput.tsx @@ -3,11 +3,15 @@ import { FieldRelationValue, } from '@/object-record/record-field/types/FieldMetadata'; import { singleRecordPickerSelectedIdComponentState } from '@/object-record/record-picker/single-record-picker/states/singleRecordPickerSelectedIdComponentState'; +import { SingleRecordPickerHotkeyScope } from '@/object-record/record-picker/single-record-picker/types/SingleRecordPickerHotkeyScope'; import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector'; +import { usePreviousHotkeyScope } from '@/ui/utilities/hotkey/hooks/usePreviousHotkeyScope'; import { useRecoilCallback } from 'recoil'; import { isDefined } from 'twenty-shared/utils'; export const useOpenRelationToOneFieldInput = () => { + const { setHotkeyScopeAndMemorizePreviousScope } = usePreviousHotkeyScope(); + const openRelationToOneFieldInput = useRecoilCallback( ({ set, snapshot }) => ({ fieldName, recordId }: { fieldName: string; recordId: string }) => { @@ -29,8 +33,12 @@ export const useOpenRelationToOneFieldInput = () => { fieldValue.id, ); } + + setHotkeyScopeAndMemorizePreviousScope( + SingleRecordPickerHotkeyScope.SingleRecordPicker, + ); }, - [], + [setHotkeyScopeAndMemorizePreviousScope], ); return { openRelationToOneFieldInput }; diff --git a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRelationToOneObject.ts b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRelationToOneObject.ts index b79a7eba6..12de64f5c 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRelationToOneObject.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRelationToOneObject.ts @@ -2,10 +2,10 @@ import { isFieldRelation } from '@/object-record/record-field/types/guards/isFie import { RelationDefinitionType } from '~/generated-metadata/graphql'; import { FieldDefinition } from '../FieldDefinition'; -import { FieldMetadata } from '../FieldMetadata'; +import { FieldMetadata, FieldRelationMetadata } from '../FieldMetadata'; export const isFieldRelationToOneObject = ( field: Pick, 'type' | 'metadata'>, -): field is FieldDefinition => +): field is FieldDefinition => isFieldRelation(field) && field.metadata.relationType === RelationDefinitionType.MANY_TO_ONE; diff --git a/packages/twenty-front/src/modules/object-record/record-inline-cell/components/RecordInlineCell.tsx b/packages/twenty-front/src/modules/object-record/record-inline-cell/components/RecordInlineCell.tsx index 96f113ed2..37c17f810 100644 --- a/packages/twenty-front/src/modules/object-record/record-inline-cell/components/RecordInlineCell.tsx +++ b/packages/twenty-front/src/modules/object-record/record-inline-cell/components/RecordInlineCell.tsx @@ -13,24 +13,16 @@ import { import { useIsFieldInputOnly } from '@/object-record/record-field/hooks/useIsFieldInputOnly'; import { useOpenFieldInputEditMode } from '@/object-record/record-field/hooks/useOpenFieldInputEditMode'; -import { FieldDefinition } from '@/object-record/record-field/types/FieldDefinition'; -import { FieldMetadata } from '@/object-record/record-field/types/FieldMetadata'; -import { isFieldRelation } from '@/object-record/record-field/types/guards/isFieldRelation'; -import { isFieldSelect } from '@/object-record/record-field/types/guards/isFieldSelect'; import { useInlineCell } from '@/object-record/record-inline-cell/hooks/useInlineCell'; import { InlineCellHotkeyScope } from '@/object-record/record-inline-cell/types/InlineCellHotkeyScope'; -import { MultipleRecordPickerHotkeyScope } from '@/object-record/record-picker/multiple-record-picker/types/MultipleRecordPickerHotkeyScope'; -import { SingleRecordPickerHotkeyScope } from '@/object-record/record-picker/single-record-picker/types/SingleRecordPickerHotkeyScope'; -import { SelectFieldHotkeyScope } from '@/object-record/select/types/SelectFieldHotkeyScope'; import { currentHotkeyScopeState } from '@/ui/utilities/hotkey/states/internal/currentHotkeyScopeState'; import { useRecoilCallback } from 'recoil'; -import { RelationDefinitionType } from '~/generated-metadata/graphql'; +import { useIcons } from 'twenty-ui/display'; import { RecordInlineCellContainer } from './RecordInlineCellContainer'; import { RecordInlineCellContext, RecordInlineCellContextProps, } from './RecordInlineCellContext'; -import { useIcons } from 'twenty-ui/display'; type RecordInlineCellProps = { readonly?: boolean; @@ -102,35 +94,6 @@ export const RecordInlineCell = ({ loading }: RecordInlineCellProps) => { const { getIcon } = useIcons(); const { openFieldInput, closeFieldInput } = useOpenFieldInputEditMode(); - // TODO: deprecate this and use useOpenFieldInput hooks to set the hotkey scope - const computedHotkeyScope = ( - columnDefinition: FieldDefinition, - ) => { - if (isFieldRelation(columnDefinition)) { - if ( - columnDefinition.metadata.relationType === - RelationDefinitionType.MANY_TO_ONE - ) { - return SingleRecordPickerHotkeyScope.SingleRecordPicker; - } - - if ( - columnDefinition.metadata.relationType === - RelationDefinitionType.ONE_TO_MANY - ) { - return MultipleRecordPickerHotkeyScope.MultipleRecordPicker; - } - - return SingleRecordPickerHotkeyScope.SingleRecordPicker; - } - - if (isFieldSelect(columnDefinition)) { - return SelectFieldHotkeyScope.SelectField; - } - - return undefined; - }; - const RecordInlineCellContextValue: RecordInlineCellContextProps = { readonly: isReadOnly, buttonIcon: buttonIcon, @@ -157,7 +120,6 @@ export const RecordInlineCell = ({ loading }: RecordInlineCellProps) => { isDisplayModeFixHeight: isDisplayModeFixHeight, editModeContentOnly: isFieldInputOnly, loading: loading, - customEditHotkeyScope: computedHotkeyScope(fieldDefinition), onOpenEditMode: onOpenEditMode ?? (() => openFieldInput({ fieldDefinition, recordId })), onCloseEditMode: onCloseEditMode ?? (() => closeFieldInput()), diff --git a/packages/twenty-front/src/modules/object-record/record-inline-cell/components/RecordInlineCellContext.tsx b/packages/twenty-front/src/modules/object-record/record-inline-cell/components/RecordInlineCellContext.tsx index 8e15a22d6..724994297 100644 --- a/packages/twenty-front/src/modules/object-record/record-inline-cell/components/RecordInlineCellContext.tsx +++ b/packages/twenty-front/src/modules/object-record/record-inline-cell/components/RecordInlineCellContext.tsx @@ -11,7 +11,6 @@ export type RecordInlineCellContextProps = { editModeContent?: ReactElement; editModeContentOnly?: boolean; displayModeContent?: ReactElement; - customEditHotkeyScope?: string; isDisplayModeFixHeight?: boolean; disableHoverEffect?: boolean; loading?: boolean; @@ -30,7 +29,6 @@ const defaultRecordInlineCellContextProp: RecordInlineCellContextProps = { editModeContent: undefined, editModeContentOnly: false, displayModeContent: undefined, - customEditHotkeyScope: undefined, isDisplayModeFixHeight: false, disableHoverEffect: false, loading: false, diff --git a/packages/twenty-front/src/modules/object-record/record-inline-cell/components/RecordInlineCellValue.tsx b/packages/twenty-front/src/modules/object-record/record-inline-cell/components/RecordInlineCellValue.tsx index f6c1456e6..b88fc44a8 100644 --- a/packages/twenty-front/src/modules/object-record/record-inline-cell/components/RecordInlineCellValue.tsx +++ b/packages/twenty-front/src/modules/object-record/record-inline-cell/components/RecordInlineCellValue.tsx @@ -32,7 +32,6 @@ const StyledClickableContainer = styled.div<{ export const RecordInlineCellValue = () => { const { displayModeContent, - customEditHotkeyScope, editModeContent, editModeContentOnly, readonly, @@ -44,7 +43,7 @@ export const RecordInlineCellValue = () => { const handleDisplayModeClick = () => { if (!readonly && !editModeContentOnly) { - openInlineCell(customEditHotkeyScope); + openInlineCell(); } }; diff --git a/packages/twenty-front/src/modules/object-record/record-inline-cell/hooks/useInlineCell.ts b/packages/twenty-front/src/modules/object-record/record-inline-cell/hooks/useInlineCell.ts index 5f18dfe60..32741a62f 100644 --- a/packages/twenty-front/src/modules/object-record/record-inline-cell/hooks/useInlineCell.ts +++ b/packages/twenty-front/src/modules/object-record/record-inline-cell/hooks/useInlineCell.ts @@ -12,9 +12,7 @@ import { getDropdownFocusIdForRecordField } from '@/object-record/utils/getDropd import { useGoBackToPreviousDropdownFocusId } from '@/ui/layout/dropdown/hooks/useGoBackToPreviousDropdownFocusId'; import { useSetActiveDropdownFocusIdAndMemorizePrevious } from '@/ui/layout/dropdown/hooks/useSetFocusedDropdownIdAndMemorizePrevious'; import { useAvailableComponentInstanceIdOrThrow } from '@/ui/utilities/state/component-state/hooks/useAvailableComponentInstanceIdOrThrow'; -import { isDefined } from 'twenty-shared/utils'; import { isInlineCellInEditModeScopedState } from '../states/isInlineCellInEditModeScopedState'; -import { InlineCellHotkeyScope } from '../types/InlineCellHotkeyScope'; export const useInlineCell = ( recordFieldComponentInstanceIdFromProps?: string, @@ -37,10 +35,9 @@ export const useInlineCell = ( const { goBackToPreviousDropdownFocusId } = useGoBackToPreviousDropdownFocusId(); - const { - setHotkeyScopeAndMemorizePreviousScope, - goBackToPreviousHotkeyScope, - } = usePreviousHotkeyScope(INLINE_CELL_HOTKEY_SCOPE_MEMOIZE_KEY); + const { goBackToPreviousHotkeyScope } = usePreviousHotkeyScope( + INLINE_CELL_HOTKEY_SCOPE_MEMOIZE_KEY, + ); const initFieldInputDraftValue = useInitDraftValueV2(); @@ -53,7 +50,7 @@ export const useInlineCell = ( goBackToPreviousDropdownFocusId(); }; - const openInlineCell = (customEditHotkeyScopeForField?: string) => { + const openInlineCell = () => { onOpenEditMode?.(); setIsInlineCellInEditMode(true); initFieldInputDraftValue({ @@ -62,12 +59,6 @@ export const useInlineCell = ( fieldComponentInstanceId: recordFieldComponentInstanceId, }); - if (isDefined(customEditHotkeyScopeForField)) { - setHotkeyScopeAndMemorizePreviousScope(customEditHotkeyScopeForField); - } else { - setHotkeyScopeAndMemorizePreviousScope(InlineCellHotkeyScope.InlineCell); - } - setActiveDropdownFocusIdAndMemorizePrevious( getDropdownFocusIdForRecordField( recordId, diff --git a/packages/twenty-front/src/modules/object-record/record-show/components/FieldsCard.tsx b/packages/twenty-front/src/modules/object-record/record-show/components/FieldsCard.tsx index 605e5b9e1..04b2846c2 100644 --- a/packages/twenty-front/src/modules/object-record/record-show/components/FieldsCard.tsx +++ b/packages/twenty-front/src/modules/object-record/record-show/components/FieldsCard.tsx @@ -11,7 +11,6 @@ import { RecordFieldComponentInstanceContext } from '@/object-record/record-fiel import { RecordInlineCell } from '@/object-record/record-inline-cell/components/RecordInlineCell'; import { PropertyBox } from '@/object-record/record-inline-cell/property-box/components/PropertyBox'; import { PropertyBoxSkeletonLoader } from '@/object-record/record-inline-cell/property-box/components/PropertyBoxSkeletonLoader'; -import { InlineCellHotkeyScope } from '@/object-record/record-inline-cell/types/InlineCellHotkeyScope'; import { useRecordShowContainerActions } from '@/object-record/record-show/hooks/useRecordShowContainerActions'; import { useRecordShowContainerData } from '@/object-record/record-show/hooks/useRecordShowContainerData'; import { RecordDetailDuplicatesSection } from '@/object-record/record-show/record-detail-section/components/RecordDetailDuplicatesSection'; @@ -112,7 +111,6 @@ export const FieldsCard = ({ labelWidth: 90, }), useUpdateRecord: useUpdateOneObjectRecordMutation, - hotkeyScope: InlineCellHotkeyScope.InlineCell, isDisplayModeFixHeight: true, isReadOnly: isRecordReadOnly, }} @@ -150,7 +148,6 @@ export const FieldsCard = ({ labelWidth: 90, }), useUpdateRecord: useUpdateOneObjectRecordMutation, - hotkeyScope: InlineCellHotkeyScope.InlineCell, isDisplayModeFixHeight: true, isReadOnly: isRecordReadOnly, }} @@ -187,7 +184,6 @@ export const FieldsCard = ({ objectMetadataItem, }), useUpdateRecord: useUpdateOneObjectRecordMutation, - hotkeyScope: InlineCellHotkeyScope.InlineCell, isDisplayModeFixHeight: true, isReadOnly: isRecordReadOnly, }} diff --git a/packages/twenty-front/src/modules/object-record/record-show/components/ObjectRecordShowPageBreadcrumb.tsx b/packages/twenty-front/src/modules/object-record/record-show/components/ObjectRecordShowPageBreadcrumb.tsx index 5502174ae..492dcfaba 100644 --- a/packages/twenty-front/src/modules/object-record/record-show/components/ObjectRecordShowPageBreadcrumb.tsx +++ b/packages/twenty-front/src/modules/object-record/record-show/components/ObjectRecordShowPageBreadcrumb.tsx @@ -2,7 +2,6 @@ import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; import { useFindOneRecord } from '@/object-record/hooks/useFindOneRecord'; import { FieldContext } from '@/object-record/record-field/contexts/FieldContext'; import { useIsRecordReadOnly } from '@/object-record/record-field/hooks/useIsRecordReadOnly'; -import { InlineCellHotkeyScope } from '@/object-record/record-inline-cell/types/InlineCellHotkeyScope'; import { useRecordShowContainerActions } from '@/object-record/record-show/hooks/useRecordShowContainerActions'; import { RecordTitleCell } from '@/object-record/record-title-cell/components/RecordTitleCell'; import styled from '@emotion/styled'; @@ -89,7 +88,6 @@ export const ObjectRecordShowPageBreadcrumb = ({ defaultValue: labelIdentifierFieldMetadataItem?.defaultValue, }, useUpdateRecord: useUpdateOneObjectRecordMutation, - hotkeyScope: InlineCellHotkeyScope.InlineCell, isCentered: false, isDisplayModeFixHeight: true, isReadOnly: isRecordReadOnly, diff --git a/packages/twenty-front/src/modules/object-record/record-show/components/SummaryCard.tsx b/packages/twenty-front/src/modules/object-record/record-show/components/SummaryCard.tsx index 2cfcbc03f..c3c75f3da 100644 --- a/packages/twenty-front/src/modules/object-record/record-show/components/SummaryCard.tsx +++ b/packages/twenty-front/src/modules/object-record/record-show/components/SummaryCard.tsx @@ -2,7 +2,6 @@ import { useGetStandardObjectIcon } from '@/object-metadata/hooks/useGetStandard import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import { FieldContext } from '@/object-record/record-field/contexts/FieldContext'; import { useIsRecordReadOnly } from '@/object-record/record-field/hooks/useIsRecordReadOnly'; -import { InlineCellHotkeyScope } from '@/object-record/record-inline-cell/types/InlineCellHotkeyScope'; import { useRecordShowContainerActions } from '@/object-record/record-show/hooks/useRecordShowContainerActions'; import { useRecordShowContainerData } from '@/object-record/record-show/hooks/useRecordShowContainerData'; import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector'; @@ -90,7 +89,6 @@ export const SummaryCard = ({ defaultValue: labelIdentifierFieldMetadataItem?.defaultValue, }, useUpdateRecord: useUpdateOneObjectRecordMutation, - hotkeyScope: InlineCellHotkeyScope.InlineCell, isCentered: !isMobile, isDisplayModeFixHeight: true, isReadOnly: isRecordReadOnly, diff --git a/packages/twenty-front/src/modules/object-record/record-show/record-detail-section/components/RecordDetailRelationRecordsListItem.tsx b/packages/twenty-front/src/modules/object-record/record-show/record-detail-section/components/RecordDetailRelationRecordsListItem.tsx index ebf9a0349..0c67bd71c 100644 --- a/packages/twenty-front/src/modules/object-record/record-show/record-detail-section/components/RecordDetailRelationRecordsListItem.tsx +++ b/packages/twenty-front/src/modules/object-record/record-show/record-detail-section/components/RecordDetailRelationRecordsListItem.tsx @@ -23,7 +23,6 @@ import { RecordFieldComponentInstanceContext } from '@/object-record/record-fiel import { FieldRelationMetadata } from '@/object-record/record-field/types/FieldMetadata'; import { RecordInlineCell } from '@/object-record/record-inline-cell/components/RecordInlineCell'; import { PropertyBox } from '@/object-record/record-inline-cell/property-box/components/PropertyBox'; -import { InlineCellHotkeyScope } from '@/object-record/record-inline-cell/types/InlineCellHotkeyScope'; import { RecordDetailRecordsListItem } from '@/object-record/record-show/record-detail-section/components/RecordDetailRecordsListItem'; import { RecordValueSetterEffect } from '@/object-record/record-store/components/RecordValueSetterEffect'; import { ObjectRecord } from '@/object-record/types/ObjectRecord'; @@ -36,8 +35,6 @@ import { useDropdown } from '@/ui/layout/dropdown/hooks/useDropdown'; import { DropdownScope } from '@/ui/layout/dropdown/scopes/DropdownScope'; import { ConfirmationModal } from '@/ui/layout/modal/components/ConfirmationModal'; import { createPortal } from 'react-dom'; -import { RelationDefinitionType } from '~/generated-metadata/graphql'; -import { AnimatedEaseInOut } from 'twenty-ui/utilities'; import { IconChevronDown, IconComponent, @@ -47,6 +44,8 @@ import { } from 'twenty-ui/display'; import { LightIconButton } from 'twenty-ui/input'; import { MenuItem } from 'twenty-ui/navigation'; +import { AnimatedEaseInOut } from 'twenty-ui/utilities'; +import { RelationDefinitionType } from '~/generated-metadata/graphql'; const StyledListItem = styled(RecordDetailRecordsListItem)<{ isDropdownOpen?: boolean; @@ -286,7 +285,6 @@ export const RecordDetailRelationRecordsListItem = ({ labelWidth: 90, }), useUpdateRecord: useUpdateOneObjectRecordMutation, - hotkeyScope: InlineCellHotkeyScope.InlineCell, isReadOnly: false, }} > diff --git a/packages/twenty-front/src/modules/object-record/record-show/record-detail-section/components/__stories__/RecordDetailRelationSection.stories.tsx b/packages/twenty-front/src/modules/object-record/record-show/record-detail-section/components/__stories__/RecordDetailRelationSection.stories.tsx index 53a95e0ff..0a355ea9d 100644 --- a/packages/twenty-front/src/modules/object-record/record-show/record-detail-section/components/__stories__/RecordDetailRelationSection.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-show/record-detail-section/components/__stories__/RecordDetailRelationSection.stories.tsx @@ -10,11 +10,11 @@ import { graphqlMocks } from '~/testing/graphqlMocks'; import { getCompaniesMock } from '~/testing/mock-data/companies'; import { ContextStoreComponentInstanceContext } from '@/context-store/states/contexts/ContextStoreComponentInstanceContext'; +import { ComponentDecorator } from 'twenty-ui/testing'; import { I18nFrontDecorator } from '~/testing/decorators/I18nFrontDecorator'; import { generatedMockObjectMetadataItems } from '~/testing/mock-data/generatedMockObjectMetadataItems'; import { allMockPersonRecords } from '~/testing/mock-data/people'; import { RecordDetailRelationSection } from '../RecordDetailRelationSection'; -import { ComponentDecorator } from 'twenty-ui/testing'; const companiesMock = getCompaniesMock(); @@ -45,7 +45,6 @@ const meta: Meta = { )!, objectMetadataItem: mockedCompanyObjectMetadataItem, }), - hotkeyScope: 'hotkey-scope', isReadOnly: false, }} > diff --git a/packages/twenty-front/src/modules/object-record/record-table/components/__stories__/perf/RecordTableCell.perf.stories.tsx b/packages/twenty-front/src/modules/object-record/record-table/components/__stories__/perf/RecordTableCell.perf.stories.tsx index eebeabe3d..63e4fcaec 100644 --- a/packages/twenty-front/src/modules/object-record/record-table/components/__stories__/perf/RecordTableCell.perf.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-table/components/__stories__/perf/RecordTableCell.perf.stories.tsx @@ -135,7 +135,6 @@ const meta: Meta = { fieldDefinition: { ...mockPerformance.fieldDefinition, }, - hotkeyScope: 'hotkey-scope', isReadOnly: false, }} > diff --git a/packages/twenty-front/src/modules/object-record/record-table/contexts/CellHotkeyScopeContext.ts b/packages/twenty-front/src/modules/object-record/record-table/contexts/CellHotkeyScopeContext.ts deleted file mode 100644 index 15419e73d..000000000 --- a/packages/twenty-front/src/modules/object-record/record-table/contexts/CellHotkeyScopeContext.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { createContext } from 'react'; - -import { HotkeyScope } from '@/ui/utilities/hotkey/types/HotkeyScope'; - -export const CellHotkeyScopeContext = createContext(null); diff --git a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellBaseContainer.tsx b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellBaseContainer.tsx index 6322f5274..9fddb0436 100644 --- a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellBaseContainer.tsx +++ b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellBaseContainer.tsx @@ -3,13 +3,9 @@ import { ReactNode, useContext } from 'react'; import { FieldContext } from '@/object-record/record-field/contexts/FieldContext'; import { useFieldFocus } from '@/object-record/record-field/hooks/useFieldFocus'; -import { CellHotkeyScopeContext } from '@/object-record/record-table/contexts/CellHotkeyScopeContext'; import { useRecordTableBodyContextOrThrow } from '@/object-record/record-table/contexts/RecordTableBodyContext'; import { RecordTableCellContext } from '@/object-record/record-table/contexts/RecordTableCellContext'; -import { - DEFAULT_CELL_SCOPE, - useOpenRecordTableCellFromCell, -} from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellFromCell'; +import { useOpenRecordTableCellFromCell } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellFromCell'; import { BORDER_COMMON, ThemeContext } from 'twenty-ui/theme'; const StyledBaseContainer = styled.div<{ @@ -81,26 +77,20 @@ export const RecordTableCellBaseContainer = ({ } }; - const { hotkeyScope } = useContext(FieldContext); - - const editHotkeyScope = { scope: hotkeyScope ?? DEFAULT_CELL_SCOPE }; - return ( - - - {children} - - + + {children} + ); }; diff --git a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellFieldContext.tsx b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellFieldContextGeneric.tsx similarity index 52% rename from packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellFieldContext.tsx rename to packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellFieldContextGeneric.tsx index 223614109..f011d7c46 100644 --- a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellFieldContext.tsx +++ b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellFieldContextGeneric.tsx @@ -1,76 +1,40 @@ import { isLabelIdentifierField } from '@/object-metadata/utils/isLabelIdentifierField'; import { FieldContext } from '@/object-record/record-field/contexts/FieldContext'; import { useIsFieldValueReadOnly } from '@/object-record/record-field/hooks/useIsFieldValueReadOnly'; -import { FieldMetadata } from '@/object-record/record-field/types/FieldMetadata'; -import { isFieldRelation } from '@/object-record/record-field/types/guards/isFieldRelation'; -import { isFieldSelect } from '@/object-record/record-field/types/guards/isFieldSelect'; import { useRecordIndexContextOrThrow } from '@/object-record/record-index/contexts/RecordIndexContext'; -import { MultipleRecordPickerHotkeyScope } from '@/object-record/record-picker/multiple-record-picker/types/MultipleRecordPickerHotkeyScope'; -import { SingleRecordPickerHotkeyScope } from '@/object-record/record-picker/single-record-picker/types/SingleRecordPickerHotkeyScope'; import { RecordUpdateContext } from '@/object-record/record-table/contexts/EntityUpdateMutationHookContext'; import { RecordTableCellContext } from '@/object-record/record-table/contexts/RecordTableCellContext'; import { useRecordTableContextOrThrow } from '@/object-record/record-table/contexts/RecordTableContext'; import { useRecordTableRowContextOrThrow } from '@/object-record/record-table/contexts/RecordTableRowContext'; -import { ColumnDefinition } from '@/object-record/record-table/types/ColumnDefinition'; -import { TableHotkeyScope } from '@/object-record/record-table/types/TableHotkeyScope'; -import { SelectFieldHotkeyScope } from '@/object-record/select/types/SelectFieldHotkeyScope'; import { ReactNode, useContext } from 'react'; -import { RelationDefinitionType } from '~/generated-metadata/graphql'; -export const RecordTableCellFieldContext = ({ - children, -}: { +type RecordTableCellFieldContextGenericProps = { children: ReactNode; -}) => { +}; + +export const RecordTableCellFieldContextGeneric = ({ + children, +}: RecordTableCellFieldContextGenericProps) => { + const { recordId, isReadOnly: isTableRowReadOnly } = + useRecordTableRowContextOrThrow(); + const { objectMetadataItem } = useRecordTableContextOrThrow(); const { indexIdentifierUrl } = useRecordIndexContextOrThrow(); const { columnDefinition } = useContext(RecordTableCellContext); - const { recordId, isReadOnly: isTableRowReadOnly } = - useRecordTableRowContextOrThrow(); - const updateRecord = useContext(RecordUpdateContext); - - const computedHotkeyScope = ( - columnDefinition: ColumnDefinition, - ) => { - if (isFieldRelation(columnDefinition)) { - if ( - columnDefinition.metadata.relationType === - RelationDefinitionType.MANY_TO_ONE - ) { - return SingleRecordPickerHotkeyScope.SingleRecordPicker; - } - - if ( - columnDefinition.metadata.relationType === - RelationDefinitionType.ONE_TO_MANY - ) { - return MultipleRecordPickerHotkeyScope.MultipleRecordPicker; - } - - return SingleRecordPickerHotkeyScope.SingleRecordPicker; - } - - if (isFieldSelect(columnDefinition)) { - return SelectFieldHotkeyScope.SelectField; - } - - return TableHotkeyScope.CellEditMode; - }; - - const customHotkeyScope = computedHotkeyScope(columnDefinition); const isFieldReadOnly = useIsFieldValueReadOnly({ fieldDefinition: columnDefinition, isRecordReadOnly: isTableRowReadOnly ?? false, }); + const updateRecord = useContext(RecordUpdateContext); + return ( [updateRecord, {}], - hotkeyScope: customHotkeyScope, labelIdentifierLink: indexIdentifierUrl(recordId), isLabelIdentifier: isLabelIdentifierField({ fieldMetadataItem: { diff --git a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellFieldContextLabelIdentifier.tsx b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellFieldContextLabelIdentifier.tsx new file mode 100644 index 000000000..bee01a16a --- /dev/null +++ b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellFieldContextLabelIdentifier.tsx @@ -0,0 +1,56 @@ +import { FieldContext } from '@/object-record/record-field/contexts/FieldContext'; +import { useIsFieldValueReadOnly } from '@/object-record/record-field/hooks/useIsFieldValueReadOnly'; +import { useRecordIndexContextOrThrow } from '@/object-record/record-index/contexts/RecordIndexContext'; +import { RecordUpdateContext } from '@/object-record/record-table/contexts/EntityUpdateMutationHookContext'; +import { RecordTableCellContext } from '@/object-record/record-table/contexts/RecordTableCellContext'; +import { useRecordTableRowContextOrThrow } from '@/object-record/record-table/contexts/RecordTableRowContext'; +import { isRecordTableScrolledLeftComponentState } from '@/object-record/record-table/states/isRecordTableScrolledLeftComponentState'; +import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2'; +import { ReactNode, useContext } from 'react'; +import { useIsMobile } from 'twenty-ui/utilities'; + +type RecordTableCellFieldContextLabelIdentifierProps = { + children: ReactNode; +}; + +export const RecordTableCellFieldContextLabelIdentifier = ({ + children, +}: RecordTableCellFieldContextLabelIdentifierProps) => { + const { indexIdentifierUrl } = useRecordIndexContextOrThrow(); + const { recordId, isReadOnly: isTableRowReadOnly } = + useRecordTableRowContextOrThrow(); + + const { columnDefinition } = useContext(RecordTableCellContext); + + const isMobile = useIsMobile(); + const isRecordTableScrolledLeftComponent = useRecoilComponentValueV2( + isRecordTableScrolledLeftComponentState, + ); + + const isFieldReadOnly = useIsFieldValueReadOnly({ + fieldDefinition: columnDefinition, + isRecordReadOnly: isTableRowReadOnly ?? false, + }); + + const updateRecord = useContext(RecordUpdateContext); + + const isLabelIdentifierCompact = + isMobile && !isRecordTableScrolledLeftComponent; + + return ( + [updateRecord, {}], + labelIdentifierLink: indexIdentifierUrl(recordId), + isLabelIdentifier: true, + isLabelIdentifierCompact, + displayedMaxRows: 1, + isReadOnly: isFieldReadOnly, + }} + > + {children} + + ); +}; diff --git a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellFieldContextWrapper.tsx b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellFieldContextWrapper.tsx index 2754eb8f9..e2b9bb813 100644 --- a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellFieldContextWrapper.tsx +++ b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellFieldContextWrapper.tsx @@ -1,19 +1,24 @@ +import { isLabelIdentifierField } from '@/object-metadata/utils/isLabelIdentifierField'; import { RecordFieldComponentInstanceContext } from '@/object-record/record-field/states/contexts/RecordFieldComponentInstanceContext'; import { RecordTableCellContext } from '@/object-record/record-table/contexts/RecordTableCellContext'; +import { useRecordTableContextOrThrow } from '@/object-record/record-table/contexts/RecordTableContext'; import { useRecordTableRowContextOrThrow } from '@/object-record/record-table/contexts/RecordTableRowContext'; -import { RecordTableCellFieldContext } from '@/object-record/record-table/record-table-cell/components/RecordTableCellFieldContext'; +import { RecordTableCellFieldContextGeneric } from '@/object-record/record-table/record-table-cell/components/RecordTableCellFieldContextGeneric'; +import { RecordTableCellFieldContextLabelIdentifier } from '@/object-record/record-table/record-table-cell/components/RecordTableCellFieldContextLabelIdentifier'; import { getRecordFieldInputId } from '@/object-record/utils/getRecordFieldInputId'; import { ReactNode, useContext } from 'react'; import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull'; +type RecordTableCellFieldContextWrapperProps = { + children: ReactNode; +}; + export const RecordTableCellFieldContextWrapper = ({ children, -}: { - children: ReactNode; -}) => { +}: RecordTableCellFieldContextWrapperProps) => { const { columnDefinition } = useContext(RecordTableCellContext); - const { recordId } = useRecordTableRowContextOrThrow(); + const { objectMetadataItem } = useRecordTableContextOrThrow(); if (isUndefinedOrNull(columnDefinition)) { return null; @@ -25,9 +30,25 @@ export const RecordTableCellFieldContextWrapper = ({ 'record-table-cell', ); + const isLabelIdentifier = isLabelIdentifierField({ + fieldMetadataItem: { + id: columnDefinition.fieldMetadataId, + name: columnDefinition.metadata.fieldName, + }, + objectMetadataItem, + }); + return ( - {children} + {isLabelIdentifier ? ( + + {children} + + ) : ( + + {children} + + )} ); }; diff --git a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/internal/__tests__/useCloseRecordTableCellInGroup.test.tsx b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/internal/__tests__/useCloseRecordTableCellInGroup.test.tsx index 9a3678dab..20a6a7ef5 100644 --- a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/internal/__tests__/useCloseRecordTableCellInGroup.test.tsx +++ b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/internal/__tests__/useCloseRecordTableCellInGroup.test.tsx @@ -18,7 +18,6 @@ import { import { useCloseRecordTableCellInGroup } from '@/object-record/record-table/record-table-cell/hooks/internal/useCloseRecordTableCellInGroup'; import { currentTableCellInEditModePositionComponentState } from '@/object-record/record-table/states/currentTableCellInEditModePositionComponentState'; import { isTableCellInEditModeComponentFamilyState } from '@/object-record/record-table/states/isTableCellInEditModeComponentFamilyState'; -import { TableHotkeyScope } from '@/object-record/record-table/types/TableHotkeyScope'; import { useDragSelect } from '@/ui/utilities/drag-select/hooks/useDragSelect'; import { useRecoilComponentFamilyValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentFamilyValueV2'; import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2'; @@ -52,7 +51,6 @@ const Wrapper = ({ children }: { children: React.ReactNode }) => ( value={{ fieldDefinition: textfieldDefinition, recordId: 'recordId', - hotkeyScope: TableHotkeyScope.Table, isLabelIdentifier: false, isReadOnly: false, }} diff --git a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/internal/__tests__/useCloseRecordTableCellNoGroup.test.tsx b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/internal/__tests__/useCloseRecordTableCellNoGroup.test.tsx index 2bfef2b4f..88561640e 100644 --- a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/internal/__tests__/useCloseRecordTableCellNoGroup.test.tsx +++ b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/internal/__tests__/useCloseRecordTableCellNoGroup.test.tsx @@ -18,7 +18,6 @@ import { import { useCloseRecordTableCellNoGroup } from '@/object-record/record-table/record-table-cell/hooks/internal/useCloseRecordTableCellNoGroup'; import { currentTableCellInEditModePositionComponentState } from '@/object-record/record-table/states/currentTableCellInEditModePositionComponentState'; import { isTableCellInEditModeComponentFamilyState } from '@/object-record/record-table/states/isTableCellInEditModeComponentFamilyState'; -import { TableHotkeyScope } from '@/object-record/record-table/types/TableHotkeyScope'; import { useDragSelect } from '@/ui/utilities/drag-select/hooks/useDragSelect'; import { useRecoilComponentFamilyValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentFamilyValueV2'; import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2'; @@ -52,7 +51,6 @@ const Wrapper = ({ children }: { children: React.ReactNode }) => ( value={{ fieldDefinition: textfieldDefinition, recordId: 'recordId', - hotkeyScope: TableHotkeyScope.Table, isLabelIdentifier: false, isReadOnly: false, }} diff --git a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellFromCell.ts b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellFromCell.ts index a53e9d37c..c000414fa 100644 --- a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellFromCell.ts +++ b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellFromCell.ts @@ -3,7 +3,6 @@ import { useContext } from 'react'; import { FieldContext } from '@/object-record/record-field/contexts/FieldContext'; import { FieldDefinition } from '@/object-record/record-field/types/FieldDefinition'; import { FieldMetadata } from '@/object-record/record-field/types/FieldMetadata'; -import { CellHotkeyScopeContext } from '@/object-record/record-table/contexts/CellHotkeyScopeContext'; import { useRecordTableRowContextOrThrow } from '@/object-record/record-table/contexts/RecordTableRowContext'; import { useCurrentTableCellPosition } from '@/object-record/record-table/record-table-cell/hooks/useCurrentCellPosition'; import { TableCellPosition } from '@/object-record/record-table/types/TableCellPosition'; @@ -27,7 +26,6 @@ export type OpenTableCellArgs = { }; export const useOpenRecordTableCellFromCell = () => { - const customCellHotkeyScope = useContext(CellHotkeyScopeContext); const { recordId, fieldDefinition, isReadOnly } = useContext(FieldContext); const { pathToShowPage, objectNameSingular } = @@ -44,7 +42,6 @@ export const useOpenRecordTableCellFromCell = () => { ) => { onOpenTableCell({ cellPosition, - customCellHotkeyScope, recordId, fieldDefinition, isReadOnly, diff --git a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2.ts b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2.ts index 4f3b59703..651d976fa 100644 --- a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2.ts +++ b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2.ts @@ -11,7 +11,6 @@ import { useLeaveTableFocus } from '@/object-record/record-table/hooks/internal/ import { useMoveEditModeToTableCellPosition } from '@/object-record/record-table/hooks/internal/useMoveEditModeToCellPosition'; import { TableCellPosition } from '@/object-record/record-table/types/TableCellPosition'; import { useDragSelect } from '@/ui/utilities/drag-select/hooks/useDragSelect'; -import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope'; import { HotkeyScope } from '@/ui/utilities/hotkey/types/HotkeyScope'; import { useClickOutsideListener } from '@/ui/utilities/pointer-event/hooks/useClickOutsideListener'; import { getSnapshotValue } from '@/ui/utilities/state/utils/getSnapshotValue'; @@ -28,7 +27,6 @@ import { useSetActiveDropdownFocusIdAndMemorizePrevious } from '@/ui/layout/drop import { useClickOustideListenerStates } from '@/ui/utilities/pointer-event/hooks/useClickOustideListenerStates'; import { ViewOpenRecordInType } from '@/views/types/ViewOpenRecordInType'; import { useNavigate } from 'react-router-dom'; -import { isDefined } from 'twenty-shared/utils'; import { TableHotkeyScope } from '../../types/TableHotkeyScope'; export const DEFAULT_CELL_SCOPE: HotkeyScope = { @@ -41,7 +39,6 @@ export type OpenTableCellArgs = { isReadOnly: boolean; pathToShowPage: string; objectNameSingular: string; - customCellHotkeyScope: HotkeyScope | null; fieldDefinition: FieldDefinition; recordId: string; isActionButtonClick: boolean; @@ -56,7 +53,6 @@ export const useOpenRecordTableCellV2 = (tableScopeId: string) => { const moveEditModeToTableCellPosition = useMoveEditModeToTableCellPosition(tableScopeId); - const setHotkeyScope = useSetHotkeyScope(); const { setDragSelectionStartEnabled } = useDragSelect(); const leaveTableFocus = useLeaveTableFocus(tableScopeId); @@ -87,7 +83,6 @@ export const useOpenRecordTableCellV2 = (tableScopeId: string) => { cellPosition, isReadOnly, objectNameSingular, - customCellHotkeyScope, fieldDefinition, recordId, isActionButtonClick, @@ -168,18 +163,6 @@ export const useOpenRecordTableCellV2 = (tableScopeId: string) => { toggleClickOutsideListener(false); - if (isDefined(customCellHotkeyScope)) { - setHotkeyScope( - customCellHotkeyScope.scope, - customCellHotkeyScope.customScopes, - ); - } else { - setHotkeyScope( - DEFAULT_CELL_SCOPE.scope, - DEFAULT_CELL_SCOPE.customScopes, - ); - } - setActiveDropdownFocusIdAndMemorizePrevious( getDropdownFocusIdForRecordField( recordId, @@ -202,7 +185,6 @@ export const useOpenRecordTableCellV2 = (tableScopeId: string) => { openRecordInCommandMenu, setViewableRecordId, setViewableRecordNameSingular, - setHotkeyScope, ], ); diff --git a/packages/twenty-front/src/modules/object-record/record-title-cell/components/RecordTitleCellFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-title-cell/components/RecordTitleCellFieldInput.tsx index a8a81d207..9acf65d93 100644 --- a/packages/twenty-front/src/modules/object-record/record-title-cell/components/RecordTitleCellFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-title-cell/components/RecordTitleCellFieldInput.tsx @@ -27,7 +27,7 @@ export const RecordTitleCellFieldInput = ({ onTab, onClickOutside, }: RecordTitleCellFieldInputProps) => { - const { fieldDefinition } = useContext(FieldContext); + const { fieldDefinition, recordId } = useContext(FieldContext); if (!isFieldText(fieldDefinition) && !isFieldFullName(fieldDefinition)) { throw new Error('Field definition is not a text or full name field'); @@ -43,6 +43,7 @@ export const RecordTitleCellFieldInput = ({ onTab={onTab} onShiftTab={onShiftTab} sizeVariant={sizeVariant} + hotkeyScope={`record-title-cell-text-field-input-${recordId}`} /> ) : isFieldFullName(fieldDefinition) ? ( ) : null} diff --git a/packages/twenty-front/src/modules/object-record/record-title-cell/components/RecordTitleCellTextFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-title-cell/components/RecordTitleCellTextFieldInput.tsx index c3b789417..b56457c5a 100644 --- a/packages/twenty-front/src/modules/object-record/record-title-cell/components/RecordTitleCellTextFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-title-cell/components/RecordTitleCellTextFieldInput.tsx @@ -17,6 +17,7 @@ type RecordTitleCellTextFieldInputProps = { onTab?: FieldInputEvent; onShiftTab?: FieldInputEvent; sizeVariant?: 'xs' | 'md'; + hotkeyScope: string; }; export const RecordTitleCellTextFieldInput = ({ @@ -26,9 +27,9 @@ export const RecordTitleCellTextFieldInput = ({ onClickOutside, onTab, onShiftTab, + hotkeyScope, }: RecordTitleCellTextFieldInputProps) => { - const { fieldDefinition, draftValue, hotkeyScope, setDraftValue } = - useTextField(); + const { fieldDefinition, draftValue, setDraftValue } = useTextField(); const wrapperRef = useRef(null); diff --git a/packages/twenty-front/src/modules/object-record/record-title-cell/components/RecordTitleFullNameFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-title-cell/components/RecordTitleFullNameFieldInput.tsx index ec8fba124..531f86d5a 100644 --- a/packages/twenty-front/src/modules/object-record/record-title-cell/components/RecordTitleFullNameFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-title-cell/components/RecordTitleFullNameFieldInput.tsx @@ -16,6 +16,7 @@ type RecordTitleFullNameFieldInputProps = { onTab?: FieldInputEvent; onShiftTab?: FieldInputEvent; sizeVariant?: 'xs' | 'md'; + hotkeyScope: string; }; export const RecordTitleFullNameFieldInput = ({ @@ -25,8 +26,9 @@ export const RecordTitleFullNameFieldInput = ({ onTab, onShiftTab, sizeVariant, + hotkeyScope, }: RecordTitleFullNameFieldInputProps) => { - const { hotkeyScope, draftValue, setDraftValue, persistFullNameField } = + const { draftValue, setDraftValue, persistFullNameField } = useFullNameField(); const convertToFullName = (newDoubleText: FieldDoubleText) => { diff --git a/packages/twenty-front/src/modules/settings/data-model/fields/preview/components/SettingsDataModelFieldPreview.tsx b/packages/twenty-front/src/modules/settings/data-model/fields/preview/components/SettingsDataModelFieldPreview.tsx index 5283e52d9..5ed23686d 100644 --- a/packages/twenty-front/src/modules/settings/data-model/fields/preview/components/SettingsDataModelFieldPreview.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/fields/preview/components/SettingsDataModelFieldPreview.tsx @@ -13,8 +13,8 @@ import { SettingsDataModelSetFieldValueEffect } from '@/settings/data-model/fiel import { SettingsDataModelSetPreviewRecordEffect } from '@/settings/data-model/fields/preview/components/SettingsDataModelSetRecordEffect'; import { useFieldPreviewValue } from '@/settings/data-model/fields/preview/hooks/useFieldPreviewValue'; import { usePreviewRecord } from '@/settings/data-model/fields/preview/hooks/usePreviewRecord'; -import { FieldMetadataType } from '~/generated-metadata/graphql'; import { useIcons } from 'twenty-ui/display'; +import { FieldMetadataType } from '~/generated-metadata/graphql'; export type SettingsDataModelFieldPreviewProps = { fieldMetadataItem: Pick< @@ -145,7 +145,6 @@ export const SettingsDataModelFieldPreview = ({ }, defaultValue: fieldMetadataItem.defaultValue, }, - hotkeyScope: 'field-preview', isReadOnly: false, }} > diff --git a/packages/twenty-front/src/modules/ui/field/input/components/DateInput.tsx b/packages/twenty-front/src/modules/ui/field/input/components/DateInput.tsx index 285e4d8a9..3e98c3ed2 100644 --- a/packages/twenty-front/src/modules/ui/field/input/components/DateInput.tsx +++ b/packages/twenty-front/src/modules/ui/field/input/components/DateInput.tsx @@ -3,7 +3,6 @@ import { useRef, useState } from 'react'; import { useRegisterInputEvents } from '@/object-record/record-field/meta-types/input/hooks/useRegisterInputEvents'; import { DateTimePicker, - MONTH_AND_YEAR_DROPDOWN_ID, MONTH_AND_YEAR_DROPDOWN_MONTH_SELECT_ID, MONTH_AND_YEAR_DROPDOWN_YEAR_SELECT_ID, } from '@/ui/input/components/internal/date/components/InternalDatePicker'; @@ -59,7 +58,6 @@ export const DateInput = ({ onSubmit?.(newDate); }; - const { closeDropdown } = useDropdown(MONTH_AND_YEAR_DROPDOWN_ID); const { closeDropdown: closeDropdownMonthSelect } = useDropdown( MONTH_AND_YEAR_DROPDOWN_MONTH_SELECT_ID, ); @@ -70,7 +68,6 @@ export const DateInput = ({ const handleEnter = () => { closeDropdownYearSelect(); closeDropdownMonthSelect(); - closeDropdown(); onEnter(internalValue); }; @@ -78,7 +75,6 @@ export const DateInput = ({ const handleEscape = () => { closeDropdownYearSelect(); closeDropdownMonthSelect(); - closeDropdown(); onEscape(internalValue); }; @@ -88,8 +84,8 @@ export const DateInput = ({ closeDropdownYearSelect(); closeDropdownMonthSelect(); - closeDropdown(); + onEscape(internalValue); onClickOutside(event, internalValue); }; diff --git a/packages/twenty-front/src/modules/ui/input/components/internal/date/components/InternalDatePicker.tsx b/packages/twenty-front/src/modules/ui/input/components/internal/date/components/InternalDatePicker.tsx index c5da11497..669811b95 100644 --- a/packages/twenty-front/src/modules/ui/input/components/internal/date/components/InternalDatePicker.tsx +++ b/packages/twenty-front/src/modules/ui/input/components/internal/date/components/InternalDatePicker.tsx @@ -23,7 +23,6 @@ import { StyledHoverableMenuItemBase, } from 'twenty-ui/navigation'; -export const MONTH_AND_YEAR_DROPDOWN_ID = 'date-picker-month-and-year-dropdown'; export const MONTH_AND_YEAR_DROPDOWN_MONTH_SELECT_ID = 'date-picker-month-and-year-dropdown-month-select'; export const MONTH_AND_YEAR_DROPDOWN_YEAR_SELECT_ID = @@ -325,7 +324,6 @@ export const DateTimePicker = ({ const { timeZone } = useContext(UserContext); - const { closeDropdown } = useDropdown(MONTH_AND_YEAR_DROPDOWN_ID); const { closeDropdown: closeDropdownMonthSelect } = useDropdown( MONTH_AND_YEAR_DROPDOWN_MONTH_SELECT_ID, ); @@ -341,7 +339,6 @@ export const DateTimePicker = ({ const closeDropdowns = () => { closeDropdownYearSelect(); closeDropdownMonthSelect(); - closeDropdown(); }; const handleClose = (newDate: Date) => { diff --git a/packages/twenty-front/src/testing/decorators/getFieldDecorator.tsx b/packages/twenty-front/src/testing/decorators/getFieldDecorator.tsx index a7e4bfaec..96ec4305b 100644 --- a/packages/twenty-front/src/testing/decorators/getFieldDecorator.tsx +++ b/packages/twenty-front/src/testing/decorators/getFieldDecorator.tsx @@ -140,7 +140,6 @@ export const getFieldDecorator = position: 0, objectMetadataItem, }), - hotkeyScope: 'hotkey-scope', isReadOnly: false, }} > diff --git a/packages/twenty-front/src/testing/hooks/useMockFieldContext.tsx b/packages/twenty-front/src/testing/hooks/useMockFieldContext.tsx index 69de392b5..860997dd9 100644 --- a/packages/twenty-front/src/testing/hooks/useMockFieldContext.tsx +++ b/packages/twenty-front/src/testing/hooks/useMockFieldContext.tsx @@ -6,7 +6,6 @@ import { FieldContext, RecordUpdateHook, } from '@/object-record/record-field/contexts/FieldContext'; -import { InlineCellHotkeyScope } from '@/object-record/record-inline-cell/types/InlineCellHotkeyScope'; export const useMockFieldContext = ({ clearable, @@ -15,7 +14,6 @@ export const useMockFieldContext = ({ isLabelIdentifier = false, objectNameSingular, objectRecordId, - customHotkeyScope, }: { clearable?: boolean; fieldMetadataName: string; @@ -23,7 +21,6 @@ export const useMockFieldContext = ({ isLabelIdentifier?: boolean; objectNameSingular: string; objectRecordId: string; - customHotkeyScope?: string; }) => { const { objectMetadataItem } = useObjectMetadataItem({ objectNameSingular, @@ -53,8 +50,6 @@ export const useMockFieldContext = ({ objectMetadataItem, }), useUpdateRecord: useUpdateOneObjectMutation, - hotkeyScope: - customHotkeyScope ?? InlineCellHotkeyScope.InlineCell, clearable, isReadOnly: false, }}