Ensure record fields uniqueness across widgets (#16781)

This PR dissociates record inputs so that several inputs for the same
record field can live on the same page.

## Simple values demo


https://github.com/user-attachments/assets/a8c224d8-4cd6-4fe3-9cf8-01f6bdd2fca9

## Relations demo


https://github.com/user-attachments/assets/87267a8b-8ce5-41ce-8a78-cba2384828bb

## Doesn't break Record Table


https://github.com/user-attachments/assets/bcdd2b05-7cb4-4ed2-9093-58be3e04e43e

## Doesn't break Show Page


https://github.com/user-attachments/assets/f9ab9e14-012c-451e-a35f-01a165523f95
This commit is contained in:
Baptiste Devessier
2025-12-24 17:01:10 +01:00
committed by GitHub
parent 6a4974e285
commit 06d0ac13c4
37 changed files with 620 additions and 436 deletions
@@ -7,6 +7,7 @@ import { type Note } from '@/activities/types/Note';
import { getActivityPreview } from '@/activities/utils/getActivityPreview';
import { useOpenRecordInCommandMenu } from '@/command-menu/hooks/useOpenRecordInCommandMenu';
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
import { RecordFieldsScopeContextProvider } from '@/object-record/record-field-list/contexts/RecordFieldsScopeContext';
import { FieldContextProvider } from '@/object-record/record-field/ui/components/FieldContextProvider';
const StyledCard = styled.div<{ isSingleNote: boolean }>`
@@ -99,11 +100,17 @@ export const NoteTile = ({
fieldMetadataName="noteTargets"
fieldPosition={0}
>
<ActivityTargetsInlineCell
componentInstanceId={componentInstanceId}
activityRecordId={note.id}
activityObjectNameSingular={CoreObjectNameSingular.Note}
/>
<RecordFieldsScopeContextProvider
value={{
scopeInstanceId: note.id,
}}
>
<ActivityTargetsInlineCell
componentInstanceId={componentInstanceId}
activityRecordId={note.id}
activityObjectNameSingular={CoreObjectNameSingular.Note}
/>
</RecordFieldsScopeContextProvider>
</FieldContextProvider>
</StyledFooter>
</StyledCard>