diff --git a/packages/twenty-front/index.html b/packages/twenty-front/index.html index 740aee959..33bf69175 100644 --- a/packages/twenty-front/index.html +++ b/packages/twenty-front/index.html @@ -1,5 +1,5 @@ - + diff --git a/packages/twenty-front/src/modules/activities/inline-cell/components/ActivityTargetInlineCellEditMode.tsx b/packages/twenty-front/src/modules/activities/inline-cell/components/ActivityTargetInlineCellEditMode.tsx index 85d2771b2..29ca7d900 100644 --- a/packages/twenty-front/src/modules/activities/inline-cell/components/ActivityTargetInlineCellEditMode.tsx +++ b/packages/twenty-front/src/modules/activities/inline-cell/components/ActivityTargetInlineCellEditMode.tsx @@ -24,9 +24,9 @@ import { objectRecordMultiSelectComponentFamilyState, } from '@/object-record/record-field/states/objectRecordMultiSelectComponentFamilyState'; import { useInlineCell } from '@/object-record/record-inline-cell/hooks/useInlineCell'; +import { ActivityTargetInlineCellEditModeMultiRecordsEffect } from '@/object-record/record-picker-morph-legacy/components/ActivityTargetInlineCellEditModeMultiRecordsEffect'; +import { ActivityTargetInlineCellEditModeMultiRecordsSearchFilterEffect } from '@/object-record/record-picker-morph-legacy/components/ActivityTargetInlineCellEditModeMultiRecordsSearchFilterEffect'; import { MultipleRecordPicker } from '@/object-record/record-picker/components/MultipleRecordPicker'; -import { ActivityTargetInlineCellEditModeMultiRecordsEffect } from '@/object-record/record-picker/legacy/components/ActivityTargetInlineCellEditModeMultiRecordsEffect'; -import { ActivityTargetInlineCellEditModeMultiRecordsSearchFilterEffect } from '@/object-record/record-picker/legacy/components/ActivityTargetInlineCellEditModeMultiRecordsSearchFilterEffect'; import { RecordPickerComponentInstanceContext } from '@/object-record/record-picker/states/contexts/RecordPickerComponentInstanceContext'; import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState'; import { prefillRecord } from '@/object-record/utils/prefillRecord'; diff --git a/packages/twenty-front/src/modules/object-metadata/components/ObjectMetadataItemsProvider.tsx b/packages/twenty-front/src/modules/object-metadata/components/ObjectMetadataItemsProvider.tsx index af5595ff9..783736a90 100644 --- a/packages/twenty-front/src/modules/object-metadata/components/ObjectMetadataItemsProvider.tsx +++ b/packages/twenty-front/src/modules/object-metadata/components/ObjectMetadataItemsProvider.tsx @@ -4,8 +4,6 @@ import { useRecoilValue } from 'recoil'; import { ObjectMetadataItemsLoadEffect } from '@/object-metadata/components/ObjectMetadataItemsLoadEffect'; import { PreComputedChipGeneratorsProvider } from '@/object-metadata/components/PreComputedChipGeneratorsProvider'; import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; -import { RelationPickerHotkeyScope } from '@/object-record/record-picker/legacy/types/RelationPickerHotkeyScope'; -import { RecordPickerComponentInstanceContext } from '@/object-record/record-picker/states/contexts/RecordPickerComponentInstanceContext'; import { UserOrMetadataLoader } from '~/loading/components/UserOrMetadataLoader'; export const ObjectMetadataItemsProvider = ({ @@ -20,11 +18,7 @@ export const ObjectMetadataItemsProvider = ({ {shouldDisplayChildren ? ( - - {children} - + {children} ) : ( diff --git a/packages/twenty-front/src/modules/object-record/record-picker/hooks/__tests__/useLimitPerMetadataItem.test.tsx b/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useLimitPerMetadataItem.test.tsx similarity index 100% rename from packages/twenty-front/src/modules/object-record/record-picker/hooks/__tests__/useLimitPerMetadataItem.test.tsx rename to packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useLimitPerMetadataItem.test.tsx diff --git a/packages/twenty-front/src/modules/object-record/record-picker/hooks/useOrderByFieldPerMetadataItem.ts b/packages/twenty-front/src/modules/object-metadata/hooks/useOrderByFieldPerMetadataItem.ts similarity index 100% rename from packages/twenty-front/src/modules/object-record/record-picker/hooks/useOrderByFieldPerMetadataItem.ts rename to packages/twenty-front/src/modules/object-metadata/hooks/useOrderByFieldPerMetadataItem.ts diff --git a/packages/twenty-front/src/modules/object-record/multiple-objects/hooks/useCombinedFindManyRecords.ts b/packages/twenty-front/src/modules/object-record/multiple-objects/hooks/useCombinedFindManyRecords.ts index f1126ccd7..7a517ab74 100644 --- a/packages/twenty-front/src/modules/object-record/multiple-objects/hooks/useCombinedFindManyRecords.ts +++ b/packages/twenty-front/src/modules/object-record/multiple-objects/hooks/useCombinedFindManyRecords.ts @@ -5,7 +5,7 @@ import { EMPTY_QUERY } from '@/object-record/constants/EmptyQuery'; import { RecordGqlOperationSignature } from '@/object-record/graphql/types/RecordGqlOperationSignature'; import { useCombinedFindManyRecordsQueryVariables } from '@/object-record/multiple-objects/hooks/useCombinedFindManyRecordsQueryVariables'; import { useGenerateCombinedFindManyRecordsQuery } from '@/object-record/multiple-objects/hooks/useGenerateCombinedFindManyRecordsQuery'; -import { MultiObjectRecordQueryResult } from '@/object-record/record-picker/hooks/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray'; +import { MultiObjectRecordQueryResult } from '@/object-record/record-picker-morph-legacy/hooks/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray'; export const useCombinedFindManyRecords = ({ operationSignatures, diff --git a/packages/twenty-front/src/modules/object-record/multiple-objects/hooks/useCombinedGetTotalCount.ts b/packages/twenty-front/src/modules/object-record/multiple-objects/hooks/useCombinedGetTotalCount.ts index de24981df..3185986bc 100644 --- a/packages/twenty-front/src/modules/object-record/multiple-objects/hooks/useCombinedGetTotalCount.ts +++ b/packages/twenty-front/src/modules/object-record/multiple-objects/hooks/useCombinedGetTotalCount.ts @@ -4,7 +4,7 @@ import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { EMPTY_QUERY } from '@/object-record/constants/EmptyQuery'; import { RecordGqlOperationSignature } from '@/object-record/graphql/types/RecordGqlOperationSignature'; import { useGenerateCombinedFindManyRecordsQuery } from '@/object-record/multiple-objects/hooks/useGenerateCombinedFindManyRecordsQuery'; -import { MultiObjectRecordQueryResult } from '@/object-record/record-picker/hooks/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray'; +import { MultiObjectRecordQueryResult } from '@/object-record/record-picker-morph-legacy/hooks/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray'; export const useCombinedGetTotalCount = ({ objectMetadataItems, diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownBooleanSelect.tsx b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownBooleanSelect.tsx index 8600d4fe6..93879c3c0 100644 --- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownBooleanSelect.tsx +++ b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownBooleanSelect.tsx @@ -7,8 +7,8 @@ import { getFilterTypeFromFieldType } from '@/object-metadata/utils/formatFieldM import { fieldMetadataItemUsedInDropdownComponentSelector } from '@/object-record/object-filter-dropdown/states/fieldMetadataItemUsedInDropdownComponentSelector'; import { selectedFilterComponentState } from '@/object-record/object-filter-dropdown/states/selectedFilterComponentState'; import { selectedOperandInDropdownComponentState } from '@/object-record/object-filter-dropdown/states/selectedOperandInDropdownComponentState'; +import { RelationPickerHotkeyScope } from '@/object-record/record-field/meta-types/input/types/RelationPickerHotkeyScope'; import { useApplyRecordFilter } from '@/object-record/record-filter/hooks/useApplyRecordFilter'; -import { RelationPickerHotkeyScope } from '@/object-record/record-picker/legacy/types/RelationPickerHotkeyScope'; import { BooleanDisplay } from '@/ui/field/display/components/BooleanDisplay'; import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer'; import { useDropdown } from '@/ui/layout/dropdown/hooks/useDropdown'; diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownFilterSelectMenuItem.tsx b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownFilterSelectMenuItem.tsx index f868861db..36934f8ac 100644 --- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownFilterSelectMenuItem.tsx +++ b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownFilterSelectMenuItem.tsx @@ -12,7 +12,7 @@ import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; import { getFilterTypeFromFieldType } from '@/object-metadata/utils/formatFieldMetadataItemsAsFilterDefinitions'; import { isCompositeField } from '@/object-record/object-filter-dropdown/utils/isCompositeField'; import { getRecordFilterOperands } from '@/object-record/record-filter/utils/getRecordFilterOperands'; -import { RelationPickerHotkeyScope } from '@/object-record/record-picker/legacy/types/RelationPickerHotkeyScope'; +import { RecordPickerHotkeyScope } from '@/object-record/record-picker/types/RecordPickerHotkeyScope'; import { useSelectableList } from '@/ui/layout/selectable-list/hooks/useSelectableList'; import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope'; import { useRecoilComponentStateV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentStateV2'; @@ -75,7 +75,7 @@ export const ObjectFilterDropdownFilterSelectMenuItem = ({ const filterType = getFilterTypeFromFieldType(fieldMetadataItem.type); if (filterType === 'RELATION' || filterType === 'SELECT') { - setHotkeyScope(RelationPickerHotkeyScope.RelationPicker); + setHotkeyScope(RecordPickerHotkeyScope.RecordPicker); } setSelectedOperandInDropdown( diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownOptionSelect.tsx b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownOptionSelect.tsx index 7f199d315..abec03167 100644 --- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownOptionSelect.tsx +++ b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownOptionSelect.tsx @@ -18,8 +18,9 @@ import { objectFilterDropdownSearchInputComponentState } from '@/object-record/o import { objectFilterDropdownSelectedOptionValuesComponentState } from '@/object-record/object-filter-dropdown/states/objectFilterDropdownSelectedOptionValuesComponentState'; import { selectedFilterComponentState } from '@/object-record/object-filter-dropdown/states/selectedFilterComponentState'; import { selectedOperandInDropdownComponentState } from '@/object-record/object-filter-dropdown/states/selectedOperandInDropdownComponentState'; +import { RelationPickerHotkeyScope } from '@/object-record/record-field/meta-types/input/types/RelationPickerHotkeyScope'; import { useApplyRecordFilter } from '@/object-record/record-filter/hooks/useApplyRecordFilter'; -import { RelationPickerHotkeyScope } from '@/object-record/record-picker/legacy/types/RelationPickerHotkeyScope'; +import { RecordPickerHotkeyScope } from '@/object-record/record-picker/types/RecordPickerHotkeyScope'; import { useScopedHotkeys } from '@/ui/utilities/hotkey/hooks/useScopedHotkeys'; import { useAvailableComponentInstanceIdOrThrow } from '@/ui/utilities/state/component-state/hooks/useAvailableComponentInstanceIdOrThrow'; import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2'; @@ -164,7 +165,7 @@ export const ObjectFilterDropdownOptionSelect = () => { { const option = optionsInDropdown.find((option) => option.id === itemId); if (isDefined(option)) { diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownRecordSelect.tsx b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownRecordSelect.tsx index 39f7025ef..814984da2 100644 --- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownRecordSelect.tsx +++ b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownRecordSelect.tsx @@ -12,7 +12,7 @@ import { selectedFilterComponentState } from '@/object-record/object-filter-drop import { selectedOperandInDropdownComponentState } from '@/object-record/object-filter-dropdown/states/selectedOperandInDropdownComponentState'; import { useApplyRecordFilter } from '@/object-record/record-filter/hooks/useApplyRecordFilter'; import { currentRecordFiltersComponentState } from '@/object-record/record-filter/states/currentRecordFiltersComponentState'; -import { RelationPickerHotkeyScope } from '@/object-record/record-picker/legacy/types/RelationPickerHotkeyScope'; +import { RecordPickerHotkeyScope } from '@/object-record/record-picker/types/RecordPickerHotkeyScope'; import { MultipleSelectDropdown } from '@/object-record/select/components/MultipleSelectDropdown'; import { useRecordsForSelect } from '@/object-record/select/hooks/useRecordsForSelect'; import { SelectableItem } from '@/object-record/select/types/SelectableItem'; @@ -232,7 +232,7 @@ export const ObjectFilterDropdownRecordSelect = ({ )} !filteredSelectedItems.some((selected) => selected.id === item.id), diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/hooks/useSelectFilterUsedInDropdown.ts b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/hooks/useSelectFilterUsedInDropdown.ts index a8ba4b154..66900a7c3 100644 --- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/hooks/useSelectFilterUsedInDropdown.ts +++ b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/hooks/useSelectFilterUsedInDropdown.ts @@ -8,7 +8,7 @@ import { selectedOperandInDropdownComponentState } from '@/object-record/object- import { getInitialFilterValue } from '@/object-record/object-filter-dropdown/utils/getInitialFilterValue'; import { useApplyRecordFilter } from '@/object-record/record-filter/hooks/useApplyRecordFilter'; import { getRecordFilterOperands } from '@/object-record/record-filter/utils/getRecordFilterOperands'; -import { RelationPickerHotkeyScope } from '@/object-record/record-picker/legacy/types/RelationPickerHotkeyScope'; +import { RecordPickerHotkeyScope } from '@/object-record/record-picker/types/RecordPickerHotkeyScope'; import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope'; import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2'; @@ -67,7 +67,7 @@ export const useSelectFilterUsedInDropdown = (componentInstanceId?: string) => { fieldMetadataItem.type === 'RELATION' || fieldMetadataItem.type === 'SELECT' ) { - setHotkeyScope(RelationPickerHotkeyScope.RelationPicker); + setHotkeyScope(RecordPickerHotkeyScope.RecordPicker); } const filterType = getFilterTypeFromFieldType(fieldMetadataItem.type); diff --git a/packages/twenty-front/src/modules/object-record/record-board/record-board-card/components/RecordBoardCardHeader.tsx b/packages/twenty-front/src/modules/object-record/record-board/record-board-card/components/RecordBoardCardHeader.tsx index d229bd3b5..e0fc8d6f1 100644 --- a/packages/twenty-front/src/modules/object-record/record-board/record-board-card/components/RecordBoardCardHeader.tsx +++ b/packages/twenty-front/src/modules/object-record/record-board/record-board-card/components/RecordBoardCardHeader.tsx @@ -4,6 +4,7 @@ import { useRecordBoardSelection } from '@/object-record/record-board/hooks/useR import { RecordBoardCardHeaderContainer } from '@/object-record/record-board/record-board-card/components/RecordBoardCardHeaderContainer'; import { StopPropagationContainer } from '@/object-record/record-board/record-board-card/components/StopPropagationContainer'; import { RecordBoardCardContext } from '@/object-record/record-board/record-board-card/contexts/RecordBoardCardContext'; +import { RecordBoardColumnContext } from '@/object-record/record-board/record-board-column/contexts/RecordBoardColumnContext'; import { useAddNewCard } from '@/object-record/record-board/record-board-column/hooks/useAddNewCard'; import { RecordBoardScopeInternalContext } from '@/object-record/record-board/scopes/scope-internal-context/RecordBoardScopeInternalContext'; import { isRecordBoardCardSelectedComponentFamilyState } from '@/object-record/record-board/states/isRecordBoardCardSelectedComponentFamilyState'; @@ -75,7 +76,11 @@ export const RecordBoardCardHeader = ({ }: RecordBoardCardHeaderProps) => { const [newLabelValue, setNewLabelValue] = useState(''); - const { handleBlur, handleInputEnter } = useAddNewCard(); + const columnId = useContext(RecordBoardColumnContext)?.columnId; + + const { handleBlur, handleInputEnter } = useAddNewCard({ + recordPickerComponentInstanceId: `add-new-card-record-picker-column-${columnId}`, + }); const { recordId } = useContext(RecordBoardCardContext); diff --git a/packages/twenty-front/src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnNewOpportunity.tsx b/packages/twenty-front/src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnNewOpportunity.tsx index 5d3aacafc..7ea5e97db 100644 --- a/packages/twenty-front/src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnNewOpportunity.tsx +++ b/packages/twenty-front/src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnNewOpportunity.tsx @@ -3,7 +3,6 @@ import { useCreateOneRecord } from '@/object-record/hooks/useCreateOneRecord'; import { useAddNewCard } from '@/object-record/record-board/record-board-column/hooks/useAddNewCard'; import { recordBoardNewRecordByColumnIdSelector } from '@/object-record/record-board/states/selectors/recordBoardNewRecordByColumnIdSelector'; import { SingleRecordPicker } from '@/object-record/record-picker/components/SingleRecordPicker'; -import { RelationPickerHotkeyScope } from '@/object-record/record-picker/legacy/types/RelationPickerHotkeyScope'; import { RecordPickerComponentInstanceContext } from '@/object-record/record-picker/states/contexts/RecordPickerComponentInstanceContext'; import { viewableRecordIdState } from '@/object-record/record-right-drawer/states/viewableRecordIdState'; import { viewableRecordNameSingularState } from '@/object-record/record-right-drawer/states/viewableRecordNameSingularState'; @@ -29,7 +28,9 @@ export const RecordBoardColumnNewOpportunity = ({ }), ); - const { handleCreateSuccess, handleEntitySelect } = useAddNewCard(); + const { handleCreateSuccess, handleEntitySelect } = useAddNewCard({ + recordPickerComponentInstanceId: `add-new-card-record-picker-column-${columnId}`, + }); const { createOneRecord: createCompany } = useCreateOneRecord({ objectNameSingular: CoreObjectNameSingular.Company, @@ -68,9 +69,12 @@ export const RecordBoardColumnNewOpportunity = ({ {newRecord.isCreating && newRecord.position === position && ( handleCreateSuccess(position, columnId, false)} onRecordSelected={(company) => company ? handleEntitySelect(position, company) : null diff --git a/packages/twenty-front/src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnNewRecord.tsx b/packages/twenty-front/src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnNewRecord.tsx index 96aefc4c5..a1527a0fc 100644 --- a/packages/twenty-front/src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnNewRecord.tsx +++ b/packages/twenty-front/src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnNewRecord.tsx @@ -18,7 +18,9 @@ export const RecordBoardColumnNewRecord = ({ }), ); - const { handleCreateSuccess } = useAddNewCard(); + const { handleCreateSuccess } = useAddNewCard({ + recordPickerComponentInstanceId: `add-new-card-record-picker-column-${columnId}`, + }); const hasObjectReadOnlyPermission = useHasObjectReadOnlyPermission(); diff --git a/packages/twenty-front/src/modules/object-record/record-board/record-board-column/hooks/useAddNewCard.ts b/packages/twenty-front/src/modules/object-record/record-board/record-board-column/hooks/useAddNewCard.ts index 59ec23036..fb30fefdb 100644 --- a/packages/twenty-front/src/modules/object-record/record-board/record-board-column/hooks/useAddNewCard.ts +++ b/packages/twenty-front/src/modules/object-record/record-board/record-board-column/hooks/useAddNewCard.ts @@ -1,8 +1,8 @@ import { RecordBoardContext } from '@/object-record/record-board/contexts/RecordBoardContext'; import { RecordBoardColumnContext } from '@/object-record/record-board/record-board-column/contexts/RecordBoardColumnContext'; import { recordBoardNewRecordByColumnIdSelector } from '@/object-record/record-board/states/selectors/recordBoardNewRecordByColumnIdSelector'; +import { RelationPickerHotkeyScope } from '@/object-record/record-field/meta-types/input/types/RelationPickerHotkeyScope'; import { useRecordSelectSearch } from '@/object-record/record-picker/hooks/useRecordSelectSearch'; -import { RelationPickerHotkeyScope } from '@/object-record/record-picker/legacy/types/RelationPickerHotkeyScope'; import { SingleRecordPickerRecord } from '@/object-record/record-picker/types/SingleRecordPickerRecord'; import { usePreviousHotkeyScope } from '@/ui/utilities/hotkey/hooks/usePreviousHotkeyScope'; import { useCallback, useContext } from 'react'; @@ -16,13 +16,19 @@ type SetFunction = ( valOrUpdater: T | ((currVal: T) => T), ) => void; -export const useAddNewCard = () => { +type UseAddNewCardProps = { + recordPickerComponentInstanceId: string; +}; + +export const useAddNewCard = ({ + recordPickerComponentInstanceId, +}: UseAddNewCardProps) => { const columnContext = useContext(RecordBoardColumnContext); const { createOneRecord, selectFieldMetadataItem, objectMetadataItem } = useContext(RecordBoardContext); - const { resetSearchFilter } = useRecordSelectSearch({ - recordPickerInstanceId: RelationPickerHotkeyScope.RelationPicker, - }); + const { resetSearchFilter } = useRecordSelectSearch( + recordPickerComponentInstanceId, + ); const { goBackToPreviousHotkeyScope, @@ -233,7 +239,6 @@ export const useAddNewCard = () => { return { handleAddNewCardClick, handleCreateSuccess, - handleCreate, handleBlur, handleInputEnter, handleEntitySelect, diff --git a/packages/twenty-front/src/modules/object-record/record-board/record-board-column/hooks/useColumnNewCardActions.ts b/packages/twenty-front/src/modules/object-record/record-board/record-board-column/hooks/useColumnNewCardActions.ts index 3926ceddb..0636f06f2 100644 --- a/packages/twenty-front/src/modules/object-record/record-board/record-board-column/hooks/useColumnNewCardActions.ts +++ b/packages/twenty-front/src/modules/object-record/record-board/record-board-column/hooks/useColumnNewCardActions.ts @@ -11,7 +11,9 @@ export const useColumnNewCardActions = (columnId: string) => { (field) => field.isLabelIdentifier, ); - const { handleAddNewCardClick } = useAddNewCard(); + const { handleAddNewCardClick } = useAddNewCard({ + recordPickerComponentInstanceId: `add-new-card-record-picker-column-${columnId}`, + }); const handleNewButtonClick = ( position: 'first' | 'last', diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/RelationFromManyFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/RelationFromManyFieldInput.tsx index 8754d7a71..e846e81a7 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/RelationFromManyFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/RelationFromManyFieldInput.tsx @@ -3,12 +3,12 @@ import { useContext } from 'react'; import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; import { FieldContext } from '@/object-record/record-field/contexts/FieldContext'; import { RelationFromManyFieldInputMultiRecordsEffect } from '@/object-record/record-field/meta-types/input/components/RelationFromManyFieldInputMultiRecordsEffect'; +import { useAddNewRecordAndOpenRightDrawer } from '@/object-record/record-field/meta-types/input/hooks/useAddNewRecordAndOpenRightDrawer'; import { useUpdateRelationFromManyFieldInput } from '@/object-record/record-field/meta-types/input/hooks/useUpdateRelationFromManyFieldInput'; import { FieldDefinition } from '@/object-record/record-field/types/FieldDefinition'; import { FieldInputEvent } from '@/object-record/record-field/types/FieldInputEvent'; import { FieldRelationMetadata } from '@/object-record/record-field/types/FieldMetadata'; import { MultipleRecordPicker } from '@/object-record/record-picker/components/MultipleRecordPicker'; -import { useAddNewRecordAndOpenRightDrawer } from '@/object-record/record-picker/hooks/useAddNewRecordAndOpenRightDrawer'; import { RecordPickerComponentInstanceContext } from '@/object-record/record-picker/states/contexts/RecordPickerComponentInstanceContext'; type RelationFromManyFieldInputProps = { diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/RelationPicker.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/RelationPicker.tsx index c2e297316..dd880d4fd 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/RelationPicker.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/RelationPicker.tsx @@ -3,12 +3,12 @@ import { IconForbid } from 'twenty-ui'; import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; import { FieldContext } from '@/object-record/record-field/contexts/FieldContext'; +import { useAddNewRecordAndOpenRightDrawer } from '@/object-record/record-field/meta-types/input/hooks/useAddNewRecordAndOpenRightDrawer'; +import { RelationPickerHotkeyScope } from '@/object-record/record-field/meta-types/input/types/RelationPickerHotkeyScope'; import { FieldDefinition } from '@/object-record/record-field/types/FieldDefinition'; import { FieldRelationMetadata } from '@/object-record/record-field/types/FieldMetadata'; +import { SearchPickerInitialValueEffect } from '@/object-record/record-picker-morph-legacy/components/SearchPickerInitialValueEffect'; import { SingleRecordPicker } from '@/object-record/record-picker/components/SingleRecordPicker'; -import { useAddNewRecordAndOpenRightDrawer } from '@/object-record/record-picker/hooks/useAddNewRecordAndOpenRightDrawer'; -import { SearchPickerInitialValueEffect } from '@/object-record/record-picker/legacy/components/SearchPickerInitialValueEffect'; -import { RelationPickerHotkeyScope } from '@/object-record/record-picker/legacy/types/RelationPickerHotkeyScope'; import { SingleRecordPickerRecord } from '@/object-record/record-picker/types/SingleRecordPickerRecord'; export type RelationPickerProps = { @@ -64,6 +64,7 @@ export const RelationPicker = ({ recordPickerInstanceId={recordPickerInstanceId} /> { const { closeDropdown } = useDropdown(dropdownId); const { isOpportunitiesCompanyFieldDisabled } = useIsOpportunitiesCompanyFieldDisabled(); - const { handleAddNewCardClick } = useAddNewCard(); + const { handleAddNewCardClick } = useAddNewCard({ + recordPickerComponentInstanceId: `add-new-card-record-picker`, + }); const handleItemClick = useCallback( (columnDefinition: RecordGroupDefinition) => { 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 1940f1fa4..192ce6910 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 @@ -14,7 +14,7 @@ import { useInlineCell } from '../hooks/useInlineCell'; import { useIsFieldValueReadOnly } from '@/object-record/record-field/hooks/useIsFieldValueReadOnly'; import { FieldInputClickOutsideEvent } from '@/object-record/record-field/meta-types/input/components/DateTimeFieldInput'; -import { RelationPickerHotkeyScope } from '@/object-record/record-picker/legacy/types/RelationPickerHotkeyScope'; +import { RelationPickerHotkeyScope } from '@/object-record/record-field/meta-types/input/types/RelationPickerHotkeyScope'; import { getDropdownFocusIdForRecordField } from '@/object-record/utils/getDropdownFocusIdForRecordField'; import { getRecordFieldInputId } from '@/object-record/utils/getRecordFieldInputId'; import { activeDropdownFocusIdState } from '@/ui/layout/dropdown/states/activeDropdownFocusIdState'; diff --git a/packages/twenty-front/src/modules/object-record/record-picker/legacy/components/ActivityTargetInlineCellEditModeMultiRecordsEffect.tsx b/packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/components/ActivityTargetInlineCellEditModeMultiRecordsEffect.tsx similarity index 100% rename from packages/twenty-front/src/modules/object-record/record-picker/legacy/components/ActivityTargetInlineCellEditModeMultiRecordsEffect.tsx rename to packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/components/ActivityTargetInlineCellEditModeMultiRecordsEffect.tsx diff --git a/packages/twenty-front/src/modules/object-record/record-picker/legacy/components/ActivityTargetInlineCellEditModeMultiRecordsSearchFilterEffect.tsx b/packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/components/ActivityTargetInlineCellEditModeMultiRecordsSearchFilterEffect.tsx similarity index 92% rename from packages/twenty-front/src/modules/object-record/record-picker/legacy/components/ActivityTargetInlineCellEditModeMultiRecordsSearchFilterEffect.tsx rename to packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/components/ActivityTargetInlineCellEditModeMultiRecordsSearchFilterEffect.tsx index 323b4374e..04f28547b 100644 --- a/packages/twenty-front/src/modules/object-record/record-picker/legacy/components/ActivityTargetInlineCellEditModeMultiRecordsSearchFilterEffect.tsx +++ b/packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/components/ActivityTargetInlineCellEditModeMultiRecordsSearchFilterEffect.tsx @@ -3,8 +3,8 @@ import { useSetRecoilState } from 'recoil'; import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import { objectRecordMultiSelectMatchesFilterRecordsIdsComponentState } from '@/object-record/record-field/states/objectRecordMultiSelectMatchesFilterRecordsIdsComponentState'; -import { useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray } from '@/object-record/record-picker/hooks/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray'; -import { useMultiObjectSearch } from '@/object-record/record-picker/hooks/useMultiObjectSearch'; +import { useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray } from '@/object-record/record-picker-morph-legacy/hooks/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray'; +import { useMultiObjectSearch } from '@/object-record/record-picker-morph-legacy/hooks/useMultiObjectSearch'; import { RecordPickerComponentInstanceContext } from '@/object-record/record-picker/states/contexts/RecordPickerComponentInstanceContext'; import { recordPickerSearchFilterComponentState } from '@/object-record/record-picker/states/recordPickerSearchFilterComponentState'; import { useAvailableComponentInstanceIdOrThrow } from '@/ui/utilities/state/component-state/hooks/useAvailableComponentInstanceIdOrThrow'; diff --git a/packages/twenty-front/src/modules/object-record/record-picker/legacy/components/MultipleObjectRecordOnClickOutsideEffect.tsx b/packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/components/MultipleObjectRecordOnClickOutsideEffect.tsx similarity index 100% rename from packages/twenty-front/src/modules/object-record/record-picker/legacy/components/MultipleObjectRecordOnClickOutsideEffect.tsx rename to packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/components/MultipleObjectRecordOnClickOutsideEffect.tsx diff --git a/packages/twenty-front/src/modules/object-record/record-picker/legacy/components/SearchPickerInitialValueEffect.tsx b/packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/components/SearchPickerInitialValueEffect.tsx similarity index 100% rename from packages/twenty-front/src/modules/object-record/record-picker/legacy/components/SearchPickerInitialValueEffect.tsx rename to packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/components/SearchPickerInitialValueEffect.tsx diff --git a/packages/twenty-front/src/modules/object-record/record-picker/hooks/__tests__/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray.test.tsx b/packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/hooks/__tests__/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray.test.tsx similarity index 96% rename from packages/twenty-front/src/modules/object-record/record-picker/hooks/__tests__/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray.test.tsx rename to packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/hooks/__tests__/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray.test.tsx index a1f5f881c..2e888ffa9 100644 --- a/packages/twenty-front/src/modules/object-record/record-picker/hooks/__tests__/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray.test.tsx +++ b/packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/hooks/__tests__/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray.test.tsx @@ -2,7 +2,7 @@ import { act, renderHook } from '@testing-library/react'; import { RecoilRoot, useSetRecoilState } from 'recoil'; import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; -import { useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray } from '@/object-record/record-picker/hooks/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray'; +import { useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray } from '@/object-record/record-picker-morph-legacy/hooks/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray'; import { RecordPickerComponentInstanceContext } from '@/object-record/record-picker/states/contexts/RecordPickerComponentInstanceContext'; import { generatedMockObjectMetadataItems } from '~/testing/mock-data/generatedMockObjectMetadataItems'; diff --git a/packages/twenty-front/src/modules/object-record/record-picker/hooks/__tests__/useMultiObjectSearchQueryResultFormattedAsObjectRecordsMap.test.tsx b/packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/hooks/__tests__/useMultiObjectSearchQueryResultFormattedAsObjectRecordsMap.test.tsx similarity index 96% rename from packages/twenty-front/src/modules/object-record/record-picker/hooks/__tests__/useMultiObjectSearchQueryResultFormattedAsObjectRecordsMap.test.tsx rename to packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/hooks/__tests__/useMultiObjectSearchQueryResultFormattedAsObjectRecordsMap.test.tsx index bd844ce54..cdde0ae38 100644 --- a/packages/twenty-front/src/modules/object-record/record-picker/hooks/__tests__/useMultiObjectSearchQueryResultFormattedAsObjectRecordsMap.test.tsx +++ b/packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/hooks/__tests__/useMultiObjectSearchQueryResultFormattedAsObjectRecordsMap.test.tsx @@ -2,7 +2,7 @@ import { act, renderHook } from '@testing-library/react'; import { RecoilRoot, useSetRecoilState } from 'recoil'; import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; -import { useMultiObjectSearchQueryResultFormattedAsObjectRecordsMap } from '@/object-record/record-picker/hooks/useMultiObjectSearchQueryResultFormattedAsObjectRecordsMap'; +import { useMultiObjectSearchQueryResultFormattedAsObjectRecordsMap } from '@/object-record/record-picker-morph-legacy/hooks/useMultiObjectSearchQueryResultFormattedAsObjectRecordsMap'; import { RecordPickerComponentInstanceContext } from '@/object-record/record-picker/states/contexts/RecordPickerComponentInstanceContext'; import { generatedMockObjectMetadataItems } from '~/testing/mock-data/generatedMockObjectMetadataItems'; diff --git a/packages/twenty-front/src/modules/object-record/record-picker/hooks/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray.ts b/packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/hooks/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray.ts similarity index 96% rename from packages/twenty-front/src/modules/object-record/record-picker/hooks/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray.ts rename to packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/hooks/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray.ts index 698725a94..124a12423 100644 --- a/packages/twenty-front/src/modules/object-record/record-picker/hooks/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray.ts +++ b/packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/hooks/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray.ts @@ -4,7 +4,7 @@ import { useRecoilValue } from 'recoil'; import { objectMetadataItemsByNamePluralMapSelector } from '@/object-metadata/states/objectMetadataItemsByNamePluralMapSelector'; import { getObjectRecordIdentifier } from '@/object-metadata/utils/getObjectRecordIdentifier'; import { RecordGqlConnection } from '@/object-record/graphql/types/RecordGqlConnection'; -import { formatMultiObjectRecordSearchResults } from '@/object-record/record-picker/utils/formatMultiObjectRecordSearchResults'; +import { formatMultiObjectRecordSearchResults } from '@/object-record/record-picker-morph-legacy/utils/formatMultiObjectRecordSearchResults'; import { ObjectRecordForSelect } from '@/object-record/types/ObjectRecordForSelect'; import { isDefined } from 'twenty-shared'; diff --git a/packages/twenty-front/src/modules/object-record/record-picker/hooks/useMultiObjectSearch.ts b/packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/hooks/useMultiObjectSearch.ts similarity index 95% rename from packages/twenty-front/src/modules/object-record/record-picker/hooks/useMultiObjectSearch.ts rename to packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/hooks/useMultiObjectSearch.ts index 4f8fbd14d..db34a95f7 100644 --- a/packages/twenty-front/src/modules/object-record/record-picker/hooks/useMultiObjectSearch.ts +++ b/packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/hooks/useMultiObjectSearch.ts @@ -6,7 +6,7 @@ import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadat import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import { EMPTY_QUERY } from '@/object-record/constants/EmptyQuery'; import { useGenerateCombinedSearchRecordsQuery } from '@/object-record/multiple-objects/hooks/useGenerateCombinedSearchRecordsQuery'; -import { MultiObjectRecordQueryResult } from '@/object-record/record-picker/hooks/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray'; +import { MultiObjectRecordQueryResult } from '@/object-record/record-picker-morph-legacy/hooks/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray'; import { isObjectMetadataItemSearchableInCombinedRequest } from '@/object-record/utils/isObjectMetadataItemSearchableInCombinedRequest'; import { isDefined } from 'twenty-shared'; diff --git a/packages/twenty-front/src/modules/object-record/record-picker/hooks/useMultiObjectSearchQueryResultFormattedAsObjectRecordsMap.ts b/packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/hooks/useMultiObjectSearchQueryResultFormattedAsObjectRecordsMap.ts similarity index 92% rename from packages/twenty-front/src/modules/object-record/record-picker/hooks/useMultiObjectSearchQueryResultFormattedAsObjectRecordsMap.ts rename to packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/hooks/useMultiObjectSearchQueryResultFormattedAsObjectRecordsMap.ts index bc105a01f..429445209 100644 --- a/packages/twenty-front/src/modules/object-record/record-picker/hooks/useMultiObjectSearchQueryResultFormattedAsObjectRecordsMap.ts +++ b/packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/hooks/useMultiObjectSearchQueryResultFormattedAsObjectRecordsMap.ts @@ -3,8 +3,8 @@ import { useRecoilValue } from 'recoil'; import { objectMetadataItemsByNamePluralMapSelector } from '@/object-metadata/states/objectMetadataItemsByNamePluralMapSelector'; import { getObjectRecordIdentifier } from '@/object-metadata/utils/getObjectRecordIdentifier'; -import { MultiObjectRecordQueryResult } from '@/object-record/record-picker/hooks/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray'; -import { formatMultiObjectRecordSearchResults } from '@/object-record/record-picker/utils/formatMultiObjectRecordSearchResults'; +import { MultiObjectRecordQueryResult } from '@/object-record/record-picker-morph-legacy/hooks/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray'; +import { formatMultiObjectRecordSearchResults } from '@/object-record/record-picker-morph-legacy/utils/formatMultiObjectRecordSearchResults'; import { ObjectRecordForSelect } from '@/object-record/types/ObjectRecordForSelect'; import { isDefined } from 'twenty-shared'; diff --git a/packages/twenty-front/src/modules/object-record/record-picker/hooks/useMultiObjectSearchSelectedItemsQuery.ts b/packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/hooks/useMultiObjectSearchSelectedItemsQuery.ts similarity index 93% rename from packages/twenty-front/src/modules/object-record/record-picker/hooks/useMultiObjectSearchSelectedItemsQuery.ts rename to packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/hooks/useMultiObjectSearchSelectedItemsQuery.ts index 9c44a7ad4..29b597207 100644 --- a/packages/twenty-front/src/modules/object-record/record-picker/hooks/useMultiObjectSearchSelectedItemsQuery.ts +++ b/packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/hooks/useMultiObjectSearchSelectedItemsQuery.ts @@ -3,13 +3,13 @@ import { isNonEmptyArray } from '@sniptt/guards'; import { useRecoilValue } from 'recoil'; import { useLimitPerMetadataItem } from '@/object-metadata/hooks/useLimitPerMetadataItem'; +import { useOrderByFieldPerMetadataItem } from '@/object-metadata/hooks/useOrderByFieldPerMetadataItem'; import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; import { useGenerateCombinedFindManyRecordsQuery } from '@/object-record/multiple-objects/hooks/useGenerateCombinedFindManyRecordsQuery'; import { MultiObjectRecordQueryResult, useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray, -} from '@/object-record/record-picker/hooks/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray'; -import { useOrderByFieldPerMetadataItem } from '@/object-record/record-picker/hooks/useOrderByFieldPerMetadataItem'; +} from '@/object-record/record-picker-morph-legacy/hooks/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray'; import { SelectedObjectRecordId } from '@/object-record/types/SelectedObjectRecordId'; import { capitalize, isDefined } from 'twenty-shared'; diff --git a/packages/twenty-front/src/modules/object-record/record-picker/utils/formatMultiObjectRecordSearchResults.ts b/packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/utils/formatMultiObjectRecordSearchResults.ts similarity index 83% rename from packages/twenty-front/src/modules/object-record/record-picker/utils/formatMultiObjectRecordSearchResults.ts rename to packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/utils/formatMultiObjectRecordSearchResults.ts index 3de525aea..233f02c5b 100644 --- a/packages/twenty-front/src/modules/object-record/record-picker/utils/formatMultiObjectRecordSearchResults.ts +++ b/packages/twenty-front/src/modules/object-record/record-picker-morph-legacy/utils/formatMultiObjectRecordSearchResults.ts @@ -1,4 +1,4 @@ -import { MultiObjectRecordQueryResult } from '@/object-record/record-picker/hooks/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray'; +import { MultiObjectRecordQueryResult } from '@/object-record/record-picker-morph-legacy/hooks/useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray'; export const formatMultiObjectRecordSearchResults = ( searchResults: MultiObjectRecordQueryResult | undefined | null, diff --git a/packages/twenty-front/src/modules/object-record/record-picker/components/SingleRecordPicker.tsx b/packages/twenty-front/src/modules/object-record/record-picker/components/SingleRecordPicker.tsx index e6fee93eb..3e9acbd6c 100644 --- a/packages/twenty-front/src/modules/object-record/record-picker/components/SingleRecordPicker.tsx +++ b/packages/twenty-front/src/modules/object-record/record-picker/components/SingleRecordPicker.tsx @@ -4,12 +4,14 @@ import { SingleRecordPickerMenuItemsWithSearch, SingleRecordPickerMenuItemsWithSearchProps, } from '@/object-record/record-picker/components/SingleRecordPickerMenuItemsWithSearch'; +import { RecordPickerComponentInstanceContext } from '@/object-record/record-picker/states/contexts/RecordPickerComponentInstanceContext'; import { DropdownMenu } from '@/ui/layout/dropdown/components/DropdownMenu'; import { useListenClickOutside } from '@/ui/utilities/pointer-event/hooks/useListenClickOutside'; import { isDefined } from 'twenty-shared'; export type SingleRecordPickerProps = { width?: number; + componentInstanceId: string; } & SingleRecordPickerMenuItemsWithSearchProps; export const SingleRecordPicker = ({ @@ -22,6 +24,7 @@ export const SingleRecordPicker = ({ objectNameSingular, selectedRecordIds, width = 200, + componentInstanceId, }: SingleRecordPickerProps) => { const containerRef = useRef(null); @@ -42,19 +45,23 @@ export const SingleRecordPicker = ({ }); return ( - - - + + + + + ); }; diff --git a/packages/twenty-front/src/modules/object-record/record-picker/components/SingleRecordPickerMenuItems.tsx b/packages/twenty-front/src/modules/object-record/record-picker/components/SingleRecordPickerMenuItems.tsx index 688556047..314a7488a 100644 --- a/packages/twenty-front/src/modules/object-record/record-picker/components/SingleRecordPickerMenuItems.tsx +++ b/packages/twenty-front/src/modules/object-record/record-picker/components/SingleRecordPickerMenuItems.tsx @@ -13,8 +13,8 @@ import { isDefined } from 'twenty-shared'; import { SingleRecordPickerMenuItem } from '@/object-record/record-picker/components/SingleRecordPickerMenuItem'; import { RECORD_PICKER_SELECTABLE_LIST_COMPONENT_INSTANCE_ID } from '@/object-record/record-picker/constants/RecordPickerSelectableListComponentInstanceId'; +import { RecordPickerHotkeyScope } from '@/object-record/record-picker/types/RecordPickerHotkeyScope'; import { SingleRecordPickerRecord } from '@/object-record/record-picker/types/SingleRecordPickerRecord'; -import { RelationPickerHotkeyScope } from '../legacy/types/RelationPickerHotkeyScope'; export type SingleRecordPickerMenuItemsProps = { EmptyIcon?: IconComponent; @@ -37,7 +37,7 @@ export const SingleRecordPickerMenuItems = ({ onCancel, onRecordSelected, selectedRecord, - hotkeyScope = RelationPickerHotkeyScope.RelationPicker, + hotkeyScope = RecordPickerHotkeyScope.RecordPicker, isFiltered, shouldSelectEmptyOption, }: SingleRecordPickerMenuItemsProps) => { diff --git a/packages/twenty-front/src/modules/object-record/record-picker/components/__stories__/SingleRecordPicker.stories.tsx b/packages/twenty-front/src/modules/object-record/record-picker/components/__stories__/SingleRecordPicker.stories.tsx index ee7ab6b01..a3df8cf2c 100644 --- a/packages/twenty-front/src/modules/object-record/record-picker/components/__stories__/SingleRecordPicker.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-picker/components/__stories__/SingleRecordPicker.stories.tsx @@ -37,6 +37,7 @@ const meta: Meta = { args: { objectNameSingular: CoreObjectNameSingular.WorkspaceMember, selectedRecordIds: [], + componentInstanceId: 'single-record-picker', }, argTypes: { selectedRecord: { diff --git a/packages/twenty-front/src/modules/object-record/record-picker/hooks/__tests__/useRecordSelectSearch.test.tsx b/packages/twenty-front/src/modules/object-record/record-picker/hooks/__tests__/useRecordSelectSearch.test.tsx index 3f5763367..1413ff599 100644 --- a/packages/twenty-front/src/modules/object-record/record-picker/hooks/__tests__/useRecordSelectSearch.test.tsx +++ b/packages/twenty-front/src/modules/object-record/record-picker/hooks/__tests__/useRecordSelectSearch.test.tsx @@ -18,9 +18,7 @@ describe('useRecordSelectSearch', () => { it('should update searchFilter after change event', async () => { const { result } = renderHook( () => { - const recordSelectSearchHook = useRecordSelectSearch({ - recordPickerInstanceId: instanceId, - }); + const recordSelectSearchHook = useRecordSelectSearch(instanceId); const internallyStoredFilter = useRecoilComponentValueV2( recordPickerSearchFilterComponentState, instanceId, diff --git a/packages/twenty-front/src/modules/object-record/record-picker/hooks/useRecordSelectSearch.ts b/packages/twenty-front/src/modules/object-record/record-picker/hooks/useRecordSelectSearch.ts index 0d0191ba5..b5b3dbc20 100644 --- a/packages/twenty-front/src/modules/object-record/record-picker/hooks/useRecordSelectSearch.ts +++ b/packages/twenty-front/src/modules/object-record/record-picker/hooks/useRecordSelectSearch.ts @@ -1,21 +1,27 @@ +import { RecordPickerComponentInstanceContext } from '@/object-record/record-picker/states/contexts/RecordPickerComponentInstanceContext'; import { recordPickerPreselectedIdComponentState } from '@/object-record/record-picker/states/recordPickerPreselectedIdComponentState'; import { recordPickerSearchFilterComponentState } from '@/object-record/record-picker/states/recordPickerSearchFilterComponentState'; +import { useAvailableComponentInstanceIdOrThrow } from '@/ui/utilities/state/component-state/hooks/useAvailableComponentInstanceIdOrThrow'; import { useSetRecoilComponentStateV2 } from '@/ui/utilities/state/component-state/hooks/useSetRecoilComponentStateV2'; import { useDebouncedCallback } from 'use-debounce'; -export const useRecordSelectSearch = ({ - recordPickerInstanceId, -}: { - recordPickerInstanceId?: string; -} = {}) => { +export const useRecordSelectSearch = ( + recordPickerComponentInstanceIdFromProps?: string, +) => { + const recordPickerComponentInstanceId = + useAvailableComponentInstanceIdOrThrow( + RecordPickerComponentInstanceContext, + recordPickerComponentInstanceIdFromProps, + ); + const setRecordPickerSearchFilter = useSetRecoilComponentStateV2( recordPickerSearchFilterComponentState, - recordPickerInstanceId, + recordPickerComponentInstanceId, ); const setRecordPickerPreselectedId = useSetRecoilComponentStateV2( recordPickerPreselectedIdComponentState, - recordPickerInstanceId, + recordPickerComponentInstanceId, ); const debouncedSetSearchFilter = useDebouncedCallback( setRecordPickerSearchFilter, diff --git a/packages/twenty-front/src/modules/object-record/record-picker/types/RecordPickerHotkeyScope.ts b/packages/twenty-front/src/modules/object-record/record-picker/types/RecordPickerHotkeyScope.ts new file mode 100644 index 000000000..180b37d96 --- /dev/null +++ b/packages/twenty-front/src/modules/object-record/record-picker/types/RecordPickerHotkeyScope.ts @@ -0,0 +1,3 @@ +export enum RecordPickerHotkeyScope { + RecordPicker = 'record-picker', +} diff --git a/packages/twenty-front/src/modules/object-record/record-show/record-detail-section/components/RecordDetailRelationSection.tsx b/packages/twenty-front/src/modules/object-record/record-show/record-detail-section/components/RecordDetailRelationSection.tsx index db16b15f6..ae2a8ce59 100644 --- a/packages/twenty-front/src/modules/object-record/record-show/record-detail-section/components/RecordDetailRelationSection.tsx +++ b/packages/twenty-front/src/modules/object-record/record-show/record-detail-section/components/RecordDetailRelationSection.tsx @@ -9,11 +9,11 @@ import { FieldContext } from '@/object-record/record-field/contexts/FieldContext import { useIsFieldValueReadOnly } from '@/object-record/record-field/hooks/useIsFieldValueReadOnly'; import { usePersistField } from '@/object-record/record-field/hooks/usePersistField'; import { RelationFromManyFieldInputMultiRecordsEffect } from '@/object-record/record-field/meta-types/input/components/RelationFromManyFieldInputMultiRecordsEffect'; +import { useAddNewRecordAndOpenRightDrawer } from '@/object-record/record-field/meta-types/input/hooks/useAddNewRecordAndOpenRightDrawer'; import { useUpdateRelationFromManyFieldInput } from '@/object-record/record-field/meta-types/input/hooks/useUpdateRelationFromManyFieldInput'; import { FieldRelationMetadata } from '@/object-record/record-field/types/FieldMetadata'; import { MultipleRecordPicker } from '@/object-record/record-picker/components/MultipleRecordPicker'; import { SingleRecordPickerMenuItemsWithSearch } from '@/object-record/record-picker/components/SingleRecordPickerMenuItemsWithSearch'; -import { useAddNewRecordAndOpenRightDrawer } from '@/object-record/record-picker/hooks/useAddNewRecordAndOpenRightDrawer'; import { RecordPickerComponentInstanceContext } from '@/object-record/record-picker/states/contexts/RecordPickerComponentInstanceContext'; import { recordPickerSearchFilterComponentState } from '@/object-record/record-picker/states/recordPickerSearchFilterComponentState'; import { SingleRecordPickerRecord } from '@/object-record/record-picker/types/SingleRecordPickerRecord'; 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 dae0602c0..9e1f3787c 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 @@ -2,10 +2,10 @@ import { ReactNode, useContext } from 'react'; import { isLabelIdentifierField } from '@/object-metadata/utils/isLabelIdentifierField'; import { FieldContext } from '@/object-record/record-field/contexts/FieldContext'; +import { RelationPickerHotkeyScope } from '@/object-record/record-field/meta-types/input/types/RelationPickerHotkeyScope'; 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 { RelationPickerHotkeyScope } from '@/object-record/record-picker/legacy/types/RelationPickerHotkeyScope'; 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'; diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowSingleRecordPicker.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowSingleRecordPicker.tsx index 80a63933a..08596900c 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowSingleRecordPicker.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowSingleRecordPicker.tsx @@ -3,7 +3,6 @@ import { FormFieldInputContainer } from '@/object-record/record-field/form-types import { FormFieldInputInputContainer } from '@/object-record/record-field/form-types/components/FormFieldInputInputContainer'; import { FormFieldInputRowContainer } from '@/object-record/record-field/form-types/components/FormFieldInputRowContainer'; import { SingleRecordPicker } from '@/object-record/record-picker/components/SingleRecordPicker'; -import { RecordPickerComponentInstanceContext } from '@/object-record/record-picker/states/contexts/RecordPickerComponentInstanceContext'; import { recordPickerSearchFilterComponentState } from '@/object-record/record-picker/states/recordPickerSearchFilterComponentState'; import { SingleRecordPickerRecord } from '@/object-record/record-picker/types/SingleRecordPickerRecord'; import { InputLabel } from '@/ui/input/components/InputLabel'; @@ -152,24 +151,21 @@ export const WorkflowSingleRecordPicker = ({ /> } dropdownComponents={ - - closeDropdown()} - onRecordSelected={handleRecordSelected} - objectNameSingular={objectNameSingular} - recordPickerInstanceId={dropdownId} - selectedRecordIds={ - draftValue?.value && - !isStandaloneVariableString(draftValue.value) - ? [draftValue.value] - : [] - } - /> - + closeDropdown()} + onRecordSelected={handleRecordSelected} + objectNameSingular={objectNameSingular} + recordPickerInstanceId={dropdownId} + selectedRecordIds={ + draftValue?.value && + !isStandaloneVariableString(draftValue.value) + ? [draftValue.value] + : [] + } + /> } dropdownHotkeyScope={{ scope: dropdownId }} />