Replace entityId by recordId in the front end. (#6355)
Hey @lucasbordeau, I replaced every `entityId` with `recordId` in the frontend. ### Some clarifications: 1. At [this line](0b207d26b6 (diff-b4f415dd1f060307ad61f64394ee96b2912f6015e26c7fd2eab4b8c6a84d2d07L14)), I changed `recordId` to `selectedRecordId` because that component has `entityId` defined in code at [this line](0b207d26b6 (diff-b4f415dd1f060307ad61f64394ee96b2912f6015e26c7fd2eab4b8c6a84d2d07L55)) which was to be changed to `recordId`. To avoid repeated constants, I changed the arguments to `selectedRecordIds`. 2. At the following links: - [File 1](0b207d26b6 (diff-52b780bdd4cfc582ca7e1b457dbbd63733bfbb7790fc421054bbd2dbf0389e16)) - [File 2](0b207d26b6 (diff-6d47cb9a59dfcf6b1495937084ae799a61da6afccb21208f04ce8e1f5afca0e4)) - [File 3](0b207d26b6 (diff-821815783f9968f1da3cd437fc9d1d1666d12dc331d279cc5fbd9817bc2df2bf)) It seems to be the tests. As I can see, it is checking for both `objectFilterDropdownSelectedEntityIdState` and `objectFilterDropdownSelectedRecordIdsState`. Since `entityIds` are supposed to be removed and `recordedId` state is already being checked, I commented out all the `entityidState` code. If they are to be removed or uncommented, please let me know, and I will do as expected. --------- Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
This commit is contained in:
@ -100,7 +100,7 @@ export const CalendarEventDetails = ({
|
|||||||
<StyledPropertyBox key={fieldName}>
|
<StyledPropertyBox key={fieldName}>
|
||||||
<FieldContext.Provider
|
<FieldContext.Provider
|
||||||
value={{
|
value={{
|
||||||
entityId: calendarEvent.id,
|
recordId: calendarEvent.id,
|
||||||
hotkeyScope: 'calendar-event-details',
|
hotkeyScope: 'calendar-event-details',
|
||||||
recoilScopeId: `${calendarEvent.id}-${fieldName}`,
|
recoilScopeId: `${calendarEvent.id}-${fieldName}`,
|
||||||
isLabelIdentifier: false,
|
isLabelIdentifier: false,
|
||||||
|
|||||||
@ -30,7 +30,7 @@ export const EventFieldDiffValue = ({
|
|||||||
<StyledEventFieldDiffValue>
|
<StyledEventFieldDiffValue>
|
||||||
<FieldContext.Provider
|
<FieldContext.Provider
|
||||||
value={{
|
value={{
|
||||||
entityId: diffArtificialRecordStoreId,
|
recordId: diffArtificialRecordStoreId,
|
||||||
isLabelIdentifier: isLabelIdentifierField({
|
isLabelIdentifier: isLabelIdentifierField({
|
||||||
fieldMetadataItem,
|
fieldMetadataItem,
|
||||||
objectMetadataItem: mainObjectMetadataItem,
|
objectMetadataItem: mainObjectMetadataItem,
|
||||||
|
|||||||
@ -66,7 +66,7 @@ export const useFieldContext = ({
|
|||||||
basePathToShowPage: isLabelIdentifier
|
basePathToShowPage: isLabelIdentifier
|
||||||
? basePathToShowPage
|
? basePathToShowPage
|
||||||
: undefined,
|
: undefined,
|
||||||
entityId: objectRecordId,
|
recordId: objectRecordId,
|
||||||
recoilScopeId: objectRecordId + fieldMetadataItem.id,
|
recoilScopeId: objectRecordId + fieldMetadataItem.id,
|
||||||
isLabelIdentifier,
|
isLabelIdentifier,
|
||||||
fieldDefinition: formatFieldMetadataItemAsColumnDefinition({
|
fieldDefinition: formatFieldMetadataItemAsColumnDefinition({
|
||||||
|
|||||||
@ -178,31 +178,33 @@ describe('useFilterDropdown', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should set objectFilterDropdownSelectedEntityId', async () => {
|
it('should set objectFilterDropdownSelectedRecordId', async () => {
|
||||||
const mockResult = 'value';
|
const mockResult = ['value'];
|
||||||
const { result } = renderHook(() => {
|
const { result } = renderHook(() => {
|
||||||
useFilterDropdown({ filterDropdownId });
|
useFilterDropdown({ filterDropdownId });
|
||||||
const { objectFilterDropdownSelectedEntityIdState } =
|
const { objectFilterDropdownSelectedRecordIdsState } =
|
||||||
useFilterDropdownStates(filterDropdownId);
|
useFilterDropdownStates(filterDropdownId);
|
||||||
|
|
||||||
const [
|
const [
|
||||||
objectFilterDropdownSelectedEntityId,
|
objectFilterDropdownSelectedRecordIds,
|
||||||
setObjectFilterDropdownSelectedEntityId,
|
setObjectFilterDropdownSelectedRecordIds,
|
||||||
] = useRecoilState(objectFilterDropdownSelectedEntityIdState);
|
] = useRecoilState(objectFilterDropdownSelectedRecordIdsState);
|
||||||
return {
|
return {
|
||||||
objectFilterDropdownSelectedEntityId,
|
objectFilterDropdownSelectedRecordIds,
|
||||||
setObjectFilterDropdownSelectedEntityId,
|
setObjectFilterDropdownSelectedRecordIds,
|
||||||
};
|
};
|
||||||
}, renderHookConfig);
|
}, renderHookConfig);
|
||||||
|
|
||||||
expect(result.current.objectFilterDropdownSelectedEntityId).toBeNull();
|
expect(
|
||||||
|
JSON.stringify(result.current.objectFilterDropdownSelectedRecordIds),
|
||||||
|
).toBe(JSON.stringify([]));
|
||||||
|
|
||||||
act(() => {
|
act(() => {
|
||||||
result.current.setObjectFilterDropdownSelectedEntityId(mockResult);
|
result.current.setObjectFilterDropdownSelectedRecordIds(mockResult);
|
||||||
});
|
});
|
||||||
|
|
||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(result.current.objectFilterDropdownSelectedEntityId).toBe(
|
expect(result.current.objectFilterDropdownSelectedRecordIds).toBe(
|
||||||
mockResult,
|
mockResult,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|||||||
@ -21,7 +21,6 @@ export const useFilterDropdown = (props?: UseFilterDropdownProps) => {
|
|||||||
availableFilterDefinitionsState,
|
availableFilterDefinitionsState,
|
||||||
filterDefinitionUsedInDropdownState,
|
filterDefinitionUsedInDropdownState,
|
||||||
objectFilterDropdownSearchInputState,
|
objectFilterDropdownSearchInputState,
|
||||||
objectFilterDropdownSelectedEntityIdState,
|
|
||||||
objectFilterDropdownSelectedRecordIdsState,
|
objectFilterDropdownSelectedRecordIdsState,
|
||||||
objectFilterDropdownSelectedOptionValuesState,
|
objectFilterDropdownSelectedOptionValuesState,
|
||||||
isObjectFilterDropdownOperandSelectUnfoldedState,
|
isObjectFilterDropdownOperandSelectUnfoldedState,
|
||||||
@ -46,13 +45,11 @@ export const useFilterDropdown = (props?: UseFilterDropdownProps) => {
|
|||||||
({ set }) =>
|
({ set }) =>
|
||||||
() => {
|
() => {
|
||||||
set(objectFilterDropdownSearchInputState, '');
|
set(objectFilterDropdownSearchInputState, '');
|
||||||
set(objectFilterDropdownSelectedEntityIdState, null);
|
|
||||||
set(objectFilterDropdownSelectedRecordIdsState, []);
|
set(objectFilterDropdownSelectedRecordIdsState, []);
|
||||||
set(selectedFilterState, undefined);
|
set(selectedFilterState, undefined);
|
||||||
},
|
},
|
||||||
[
|
[
|
||||||
objectFilterDropdownSearchInputState,
|
objectFilterDropdownSearchInputState,
|
||||||
objectFilterDropdownSelectedEntityIdState,
|
|
||||||
objectFilterDropdownSelectedRecordIdsState,
|
objectFilterDropdownSelectedRecordIdsState,
|
||||||
selectedFilterState,
|
selectedFilterState,
|
||||||
],
|
],
|
||||||
@ -62,7 +59,6 @@ export const useFilterDropdown = (props?: UseFilterDropdownProps) => {
|
|||||||
({ set }) =>
|
({ set }) =>
|
||||||
() => {
|
() => {
|
||||||
set(objectFilterDropdownSearchInputState, '');
|
set(objectFilterDropdownSearchInputState, '');
|
||||||
set(objectFilterDropdownSelectedEntityIdState, null);
|
|
||||||
set(objectFilterDropdownSelectedRecordIdsState, []);
|
set(objectFilterDropdownSelectedRecordIdsState, []);
|
||||||
set(selectedFilterState, undefined);
|
set(selectedFilterState, undefined);
|
||||||
set(filterDefinitionUsedInDropdownState, null);
|
set(filterDefinitionUsedInDropdownState, null);
|
||||||
@ -71,7 +67,6 @@ export const useFilterDropdown = (props?: UseFilterDropdownProps) => {
|
|||||||
[
|
[
|
||||||
filterDefinitionUsedInDropdownState,
|
filterDefinitionUsedInDropdownState,
|
||||||
objectFilterDropdownSearchInputState,
|
objectFilterDropdownSearchInputState,
|
||||||
objectFilterDropdownSelectedEntityIdState,
|
|
||||||
objectFilterDropdownSelectedRecordIdsState,
|
objectFilterDropdownSelectedRecordIdsState,
|
||||||
selectedFilterState,
|
selectedFilterState,
|
||||||
selectedOperandInDropdownState,
|
selectedOperandInDropdownState,
|
||||||
@ -91,9 +86,6 @@ export const useFilterDropdown = (props?: UseFilterDropdownProps) => {
|
|||||||
const setObjectFilterDropdownSearchInput = useSetRecoilState(
|
const setObjectFilterDropdownSearchInput = useSetRecoilState(
|
||||||
objectFilterDropdownSearchInputState,
|
objectFilterDropdownSearchInputState,
|
||||||
);
|
);
|
||||||
const setObjectFilterDropdownSelectedEntityId = useSetRecoilState(
|
|
||||||
objectFilterDropdownSelectedEntityIdState,
|
|
||||||
);
|
|
||||||
const setObjectFilterDropdownSelectedRecordIds = useSetRecoilState(
|
const setObjectFilterDropdownSelectedRecordIds = useSetRecoilState(
|
||||||
objectFilterDropdownSelectedRecordIdsState,
|
objectFilterDropdownSelectedRecordIdsState,
|
||||||
);
|
);
|
||||||
@ -117,7 +109,7 @@ export const useFilterDropdown = (props?: UseFilterDropdownProps) => {
|
|||||||
setAvailableFilterDefinitions,
|
setAvailableFilterDefinitions,
|
||||||
setFilterDefinitionUsedInDropdown,
|
setFilterDefinitionUsedInDropdown,
|
||||||
setObjectFilterDropdownSearchInput,
|
setObjectFilterDropdownSearchInput,
|
||||||
setObjectFilterDropdownSelectedEntityId,
|
// setObjectFilterDropdownSelectedEntityId,
|
||||||
setObjectFilterDropdownSelectedRecordIds,
|
setObjectFilterDropdownSelectedRecordIds,
|
||||||
setObjectFilterDropdownSelectedOptionValues,
|
setObjectFilterDropdownSelectedOptionValues,
|
||||||
setIsObjectFilterDropdownOperandSelectUnfolded,
|
setIsObjectFilterDropdownOperandSelectUnfolded,
|
||||||
@ -127,7 +119,7 @@ export const useFilterDropdown = (props?: UseFilterDropdownProps) => {
|
|||||||
availableFilterDefinitionsState,
|
availableFilterDefinitionsState,
|
||||||
filterDefinitionUsedInDropdownState,
|
filterDefinitionUsedInDropdownState,
|
||||||
objectFilterDropdownSearchInputState,
|
objectFilterDropdownSearchInputState,
|
||||||
objectFilterDropdownSelectedEntityIdState,
|
// objectFilterDropdownSelectedEntityIdState,
|
||||||
objectFilterDropdownSelectedRecordIdsState,
|
objectFilterDropdownSelectedRecordIdsState,
|
||||||
objectFilterDropdownSelectedOptionValuesState,
|
objectFilterDropdownSelectedOptionValuesState,
|
||||||
isObjectFilterDropdownOperandSelectUnfoldedState,
|
isObjectFilterDropdownOperandSelectUnfoldedState,
|
||||||
|
|||||||
@ -2,7 +2,6 @@ import { filterDefinitionUsedInDropdownComponentState } from '@/object-record/ob
|
|||||||
import { isObjectFilterDropdownOperandSelectUnfoldedComponentState } from '@/object-record/object-filter-dropdown/states/isObjectFilterDropdownOperandSelectUnfoldedComponentState';
|
import { isObjectFilterDropdownOperandSelectUnfoldedComponentState } from '@/object-record/object-filter-dropdown/states/isObjectFilterDropdownOperandSelectUnfoldedComponentState';
|
||||||
import { isObjectFilterDropdownUnfoldedComponentState } from '@/object-record/object-filter-dropdown/states/isObjectFilterDropdownUnfoldedComponentState';
|
import { isObjectFilterDropdownUnfoldedComponentState } from '@/object-record/object-filter-dropdown/states/isObjectFilterDropdownUnfoldedComponentState';
|
||||||
import { objectFilterDropdownSearchInputComponentState } from '@/object-record/object-filter-dropdown/states/objectFilterDropdownSearchInputComponentState';
|
import { objectFilterDropdownSearchInputComponentState } from '@/object-record/object-filter-dropdown/states/objectFilterDropdownSearchInputComponentState';
|
||||||
import { objectFilterDropdownSelectedEntityIdComponentState } from '@/object-record/object-filter-dropdown/states/objectFilterDropdownSelectedEntityIdComponentState';
|
|
||||||
import { objectFilterDropdownSelectedOptionValuesComponentState } from '@/object-record/object-filter-dropdown/states/objectFilterDropdownSelectedOptionValuesComponentState';
|
import { objectFilterDropdownSelectedOptionValuesComponentState } from '@/object-record/object-filter-dropdown/states/objectFilterDropdownSelectedOptionValuesComponentState';
|
||||||
import { objectFilterDropdownSelectedRecordIdsComponentState } from '@/object-record/object-filter-dropdown/states/objectFilterDropdownSelectedRecordIdsComponentState';
|
import { objectFilterDropdownSelectedRecordIdsComponentState } from '@/object-record/object-filter-dropdown/states/objectFilterDropdownSelectedRecordIdsComponentState';
|
||||||
import { onFilterSelectComponentState } from '@/object-record/object-filter-dropdown/states/onFilterSelectComponentState';
|
import { onFilterSelectComponentState } from '@/object-record/object-filter-dropdown/states/onFilterSelectComponentState';
|
||||||
@ -27,11 +26,6 @@ export const useFilterDropdownStates = (scopeId: string) => {
|
|||||||
scopeId,
|
scopeId,
|
||||||
);
|
);
|
||||||
|
|
||||||
const objectFilterDropdownSelectedEntityIdState = extractComponentState(
|
|
||||||
objectFilterDropdownSelectedEntityIdComponentState,
|
|
||||||
scopeId,
|
|
||||||
);
|
|
||||||
|
|
||||||
const objectFilterDropdownSelectedRecordIdsState = extractComponentState(
|
const objectFilterDropdownSelectedRecordIdsState = extractComponentState(
|
||||||
objectFilterDropdownSelectedRecordIdsComponentState,
|
objectFilterDropdownSelectedRecordIdsComponentState,
|
||||||
scopeId,
|
scopeId,
|
||||||
@ -72,7 +66,6 @@ export const useFilterDropdownStates = (scopeId: string) => {
|
|||||||
availableFilterDefinitionsState,
|
availableFilterDefinitionsState,
|
||||||
filterDefinitionUsedInDropdownState,
|
filterDefinitionUsedInDropdownState,
|
||||||
objectFilterDropdownSearchInputState,
|
objectFilterDropdownSearchInputState,
|
||||||
objectFilterDropdownSelectedEntityIdState,
|
|
||||||
objectFilterDropdownSelectedRecordIdsState,
|
objectFilterDropdownSelectedRecordIdsState,
|
||||||
objectFilterDropdownSelectedOptionValuesState,
|
objectFilterDropdownSelectedOptionValuesState,
|
||||||
isObjectFilterDropdownOperandSelectUnfoldedState,
|
isObjectFilterDropdownOperandSelectUnfoldedState,
|
||||||
|
|||||||
@ -1,7 +0,0 @@
|
|||||||
import { createComponentState } from '@/ui/utilities/state/component-state/utils/createComponentState';
|
|
||||||
|
|
||||||
export const objectFilterDropdownSelectedEntityIdComponentState =
|
|
||||||
createComponentState<string | null>({
|
|
||||||
key: 'objectFilterDropdownSelectedEntityIdComponentState',
|
|
||||||
defaultValue: null,
|
|
||||||
});
|
|
||||||
@ -263,7 +263,7 @@ export const RecordBoardCard = () => {
|
|||||||
>
|
>
|
||||||
<FieldContext.Provider
|
<FieldContext.Provider
|
||||||
value={{
|
value={{
|
||||||
entityId: recordId,
|
recordId,
|
||||||
maxWidth: 156,
|
maxWidth: 156,
|
||||||
recoilScopeId: recordId + fieldDefinition.fieldMetadataId,
|
recoilScopeId: recordId + fieldDefinition.fieldMetadataId,
|
||||||
isLabelIdentifier: false,
|
isLabelIdentifier: false,
|
||||||
|
|||||||
@ -22,7 +22,7 @@ export type RecordUpdateHook = () => [
|
|||||||
export type GenericFieldContextType = {
|
export type GenericFieldContextType = {
|
||||||
fieldDefinition: FieldDefinition<FieldMetadata>;
|
fieldDefinition: FieldDefinition<FieldMetadata>;
|
||||||
useUpdateRecord?: RecordUpdateHook;
|
useUpdateRecord?: RecordUpdateHook;
|
||||||
entityId: string;
|
recordId: string;
|
||||||
recoilScopeId?: string;
|
recoilScopeId?: string;
|
||||||
hotkeyScope: string;
|
hotkeyScope: string;
|
||||||
isLabelIdentifier: boolean;
|
isLabelIdentifier: boolean;
|
||||||
|
|||||||
@ -12,7 +12,7 @@ import { useGetButtonIcon } from '@/object-record/record-field/hooks/useGetButto
|
|||||||
import { FieldDefinition } from '@/object-record/record-field/types/FieldDefinition';
|
import { FieldDefinition } from '@/object-record/record-field/types/FieldDefinition';
|
||||||
import { FieldMetadata } from '@/object-record/record-field/types/FieldMetadata';
|
import { FieldMetadata } from '@/object-record/record-field/types/FieldMetadata';
|
||||||
|
|
||||||
const entityId = 'entityId';
|
const recordId = 'recordId';
|
||||||
|
|
||||||
const getWrapper =
|
const getWrapper =
|
||||||
(fieldDefinition: FieldDefinition<FieldMetadata>) =>
|
(fieldDefinition: FieldDefinition<FieldMetadata>) =>
|
||||||
@ -20,7 +20,7 @@ const getWrapper =
|
|||||||
<FieldContext.Provider
|
<FieldContext.Provider
|
||||||
value={{
|
value={{
|
||||||
fieldDefinition,
|
fieldDefinition,
|
||||||
entityId,
|
recordId,
|
||||||
hotkeyScope: 'hotkeyScope',
|
hotkeyScope: 'hotkeyScope',
|
||||||
isLabelIdentifier: false,
|
isLabelIdentifier: false,
|
||||||
}}
|
}}
|
||||||
|
|||||||
@ -7,13 +7,13 @@ import { FieldContext } from '@/object-record/record-field/contexts/FieldContext
|
|||||||
import { useIsFieldEmpty } from '@/object-record/record-field/hooks/useIsFieldEmpty';
|
import { useIsFieldEmpty } from '@/object-record/record-field/hooks/useIsFieldEmpty';
|
||||||
import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState';
|
import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState';
|
||||||
|
|
||||||
const entityId = 'entityId';
|
const recordId = 'recordId';
|
||||||
|
|
||||||
const Wrapper = ({ children }: { children: ReactNode }) => (
|
const Wrapper = ({ children }: { children: ReactNode }) => (
|
||||||
<FieldContext.Provider
|
<FieldContext.Provider
|
||||||
value={{
|
value={{
|
||||||
fieldDefinition: phoneFieldDefinition,
|
fieldDefinition: phoneFieldDefinition,
|
||||||
entityId,
|
recordId,
|
||||||
hotkeyScope: 'hotkeyScope',
|
hotkeyScope: 'hotkeyScope',
|
||||||
isLabelIdentifier: false,
|
isLabelIdentifier: false,
|
||||||
}}
|
}}
|
||||||
@ -27,7 +27,7 @@ describe('useIsFieldEmpty', () => {
|
|||||||
const { result } = renderHook(
|
const { result } = renderHook(
|
||||||
() => {
|
() => {
|
||||||
const setFieldState = useSetRecoilState(
|
const setFieldState = useSetRecoilState(
|
||||||
recordStoreFamilyState(entityId),
|
recordStoreFamilyState(recordId),
|
||||||
);
|
);
|
||||||
return {
|
return {
|
||||||
setFieldState,
|
setFieldState,
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import { useIsFieldInputOnly } from '@/object-record/record-field/hooks/useIsFie
|
|||||||
import { FieldDefinition } from '@/object-record/record-field/types/FieldDefinition';
|
import { FieldDefinition } from '@/object-record/record-field/types/FieldDefinition';
|
||||||
import { FieldMetadata } from '@/object-record/record-field/types/FieldMetadata';
|
import { FieldMetadata } from '@/object-record/record-field/types/FieldMetadata';
|
||||||
|
|
||||||
const entityId = 'entityId';
|
const recordId = 'recordId';
|
||||||
|
|
||||||
const getWrapper =
|
const getWrapper =
|
||||||
(fieldDefinition: FieldDefinition<FieldMetadata>) =>
|
(fieldDefinition: FieldDefinition<FieldMetadata>) =>
|
||||||
@ -19,7 +19,7 @@ const getWrapper =
|
|||||||
<FieldContext.Provider
|
<FieldContext.Provider
|
||||||
value={{
|
value={{
|
||||||
fieldDefinition,
|
fieldDefinition,
|
||||||
entityId,
|
recordId,
|
||||||
hotkeyScope: 'hotkeyScope',
|
hotkeyScope: 'hotkeyScope',
|
||||||
isLabelIdentifier: false,
|
isLabelIdentifier: false,
|
||||||
}}
|
}}
|
||||||
|
|||||||
@ -55,12 +55,12 @@ const mocks: MockedResponse[] = [
|
|||||||
{
|
{
|
||||||
request: {
|
request: {
|
||||||
query,
|
query,
|
||||||
variables: { idToUpdate: 'entityId', input: { phone: '+1 123 456' } },
|
variables: { idToUpdate: 'recordId', input: { phone: '+1 123 456' } },
|
||||||
},
|
},
|
||||||
result: jest.fn(() => ({
|
result: jest.fn(() => ({
|
||||||
data: {
|
data: {
|
||||||
updatePerson: {
|
updatePerson: {
|
||||||
id: 'entityId',
|
id: 'recordId',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})),
|
})),
|
||||||
@ -69,21 +69,21 @@ const mocks: MockedResponse[] = [
|
|||||||
request: {
|
request: {
|
||||||
query,
|
query,
|
||||||
variables: {
|
variables: {
|
||||||
idToUpdate: 'entityId',
|
idToUpdate: 'recordId',
|
||||||
input: { companyId: 'companyId' },
|
input: { companyId: 'companyId' },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
result: jest.fn(() => ({
|
result: jest.fn(() => ({
|
||||||
data: {
|
data: {
|
||||||
updatePerson: {
|
updatePerson: {
|
||||||
id: 'entityId',
|
id: 'recordId',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})),
|
})),
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
const entityId = 'entityId';
|
const recordId = 'recordId';
|
||||||
|
|
||||||
const getWrapper =
|
const getWrapper =
|
||||||
(fieldDefinition: FieldDefinition<FieldMetadata>) =>
|
(fieldDefinition: FieldDefinition<FieldMetadata>) =>
|
||||||
@ -108,7 +108,7 @@ const getWrapper =
|
|||||||
<FieldContext.Provider
|
<FieldContext.Provider
|
||||||
value={{
|
value={{
|
||||||
fieldDefinition,
|
fieldDefinition,
|
||||||
entityId,
|
recordId,
|
||||||
hotkeyScope: 'hotkeyScope',
|
hotkeyScope: 'hotkeyScope',
|
||||||
isLabelIdentifier: false,
|
isLabelIdentifier: false,
|
||||||
useUpdateRecord: useUpdateOneRecordMutation,
|
useUpdateRecord: useUpdateOneRecordMutation,
|
||||||
@ -128,7 +128,7 @@ describe('usePersistField', () => {
|
|||||||
const { result } = renderHook(
|
const { result } = renderHook(
|
||||||
() => {
|
() => {
|
||||||
const entityFields = useRecoilValue(
|
const entityFields = useRecoilValue(
|
||||||
recordStoreFamilySelector({ recordId: entityId, fieldName: 'phone' }),
|
recordStoreFamilySelector({ recordId, fieldName: 'phone' }),
|
||||||
);
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -153,7 +153,7 @@ describe('usePersistField', () => {
|
|||||||
() => {
|
() => {
|
||||||
const entityFields = useRecoilValue(
|
const entityFields = useRecoilValue(
|
||||||
recordStoreFamilySelector({
|
recordStoreFamilySelector({
|
||||||
recordId: entityId,
|
recordId,
|
||||||
fieldName: 'company',
|
fieldName: 'company',
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|||||||
@ -14,7 +14,7 @@ import {
|
|||||||
} from '@/object-record/record-field/contexts/FieldContext';
|
} from '@/object-record/record-field/contexts/FieldContext';
|
||||||
import { useToggleEditOnlyInput } from '@/object-record/record-field/hooks/useToggleEditOnlyInput';
|
import { useToggleEditOnlyInput } from '@/object-record/record-field/hooks/useToggleEditOnlyInput';
|
||||||
|
|
||||||
const entityId = 'entityId';
|
const recordId = 'recordId';
|
||||||
|
|
||||||
const mocks: MockedResponse[] = [
|
const mocks: MockedResponse[] = [
|
||||||
{
|
{
|
||||||
@ -66,14 +66,14 @@ const mocks: MockedResponse[] = [
|
|||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
variables: {
|
variables: {
|
||||||
idToUpdate: 'entityId',
|
idToUpdate: 'recordId',
|
||||||
input: { idealCustomerProfile: true },
|
input: { idealCustomerProfile: true },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
result: jest.fn(() => ({
|
result: jest.fn(() => ({
|
||||||
data: {
|
data: {
|
||||||
updateWorkspaceMember: {
|
updateWorkspaceMember: {
|
||||||
id: 'entityId',
|
id: 'recordId',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})),
|
})),
|
||||||
@ -101,7 +101,7 @@ const Wrapper = ({ children }: { children: ReactNode }) => {
|
|||||||
<FieldContext.Provider
|
<FieldContext.Provider
|
||||||
value={{
|
value={{
|
||||||
fieldDefinition: booleanFieldDefinition,
|
fieldDefinition: booleanFieldDefinition,
|
||||||
entityId,
|
recordId,
|
||||||
hotkeyScope: 'hotkeyScope',
|
hotkeyScope: 'hotkeyScope',
|
||||||
isLabelIdentifier: false,
|
isLabelIdentifier: false,
|
||||||
useUpdateRecord: useUpdateOneRecordMutation,
|
useUpdateRecord: useUpdateOneRecordMutation,
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import { FieldContext } from '../contexts/FieldContext';
|
|||||||
|
|
||||||
export const useClearField = () => {
|
export const useClearField = () => {
|
||||||
const {
|
const {
|
||||||
entityId,
|
recordId,
|
||||||
fieldDefinition,
|
fieldDefinition,
|
||||||
useUpdateRecord = () => [],
|
useUpdateRecord = () => [],
|
||||||
} = useContext(FieldContext);
|
} = useContext(FieldContext);
|
||||||
@ -45,22 +45,22 @@ export const useClearField = () => {
|
|||||||
const emptyFieldValue = generateEmptyFieldValue(foundFieldMetadataItem);
|
const emptyFieldValue = generateEmptyFieldValue(foundFieldMetadataItem);
|
||||||
|
|
||||||
set(
|
set(
|
||||||
recordStoreFamilySelector({ recordId: entityId, fieldName }),
|
recordStoreFamilySelector({ recordId, fieldName }),
|
||||||
emptyFieldValue,
|
emptyFieldValue,
|
||||||
);
|
);
|
||||||
|
|
||||||
setRecordFieldValue(entityId, fieldName, emptyFieldValue);
|
setRecordFieldValue(recordId, fieldName, emptyFieldValue);
|
||||||
|
|
||||||
updateRecord?.({
|
updateRecord?.({
|
||||||
variables: {
|
variables: {
|
||||||
where: { id: entityId },
|
where: { id: recordId },
|
||||||
updateOneRecordInput: {
|
updateOneRecordInput: {
|
||||||
[fieldName]: emptyFieldValue,
|
[fieldName]: emptyFieldValue,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
[entityId, fieldDefinition, updateRecord, setRecordFieldValue],
|
[recordId, fieldDefinition, updateRecord, setRecordFieldValue],
|
||||||
);
|
);
|
||||||
|
|
||||||
return clearField;
|
return clearField;
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import { FieldMetadata } from '@/object-record/record-field/types/FieldMetadata'
|
|||||||
import { computeDraftValueFromFieldValue } from '@/object-record/record-field/utils/computeDraftValueFromFieldValue';
|
import { computeDraftValueFromFieldValue } from '@/object-record/record-field/utils/computeDraftValueFromFieldValue';
|
||||||
import { computeDraftValueFromString } from '@/object-record/record-field/utils/computeDraftValueFromString';
|
import { computeDraftValueFromString } from '@/object-record/record-field/utils/computeDraftValueFromString';
|
||||||
import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector';
|
import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector';
|
||||||
|
import { getRecordFieldInputId } from '@/object-record/utils/getRecordFieldInputId';
|
||||||
import { extractComponentSelector } from '@/ui/utilities/state/component-state/utils/extractComponentSelector';
|
import { extractComponentSelector } from '@/ui/utilities/state/component-state/utils/extractComponentSelector';
|
||||||
|
|
||||||
export const useInitDraftValueV2 = <FieldValue>() => {
|
export const useInitDraftValueV2 = <FieldValue>() => {
|
||||||
@ -16,14 +17,17 @@ export const useInitDraftValueV2 = <FieldValue>() => {
|
|||||||
({ set, snapshot }) =>
|
({ set, snapshot }) =>
|
||||||
({
|
({
|
||||||
value,
|
value,
|
||||||
entityId,
|
recordId,
|
||||||
fieldDefinition,
|
fieldDefinition,
|
||||||
}: {
|
}: {
|
||||||
value?: string;
|
value?: string;
|
||||||
entityId: string;
|
recordId: string;
|
||||||
fieldDefinition: FieldDefinition<FieldMetadata>;
|
fieldDefinition: FieldDefinition<FieldMetadata>;
|
||||||
}) => {
|
}) => {
|
||||||
const recordFieldInputScopeId = `${entityId}-${fieldDefinition?.metadata?.fieldName}-scope`;
|
const recordFieldInputScopeId = `${getRecordFieldInputId(
|
||||||
|
recordId,
|
||||||
|
fieldDefinition?.metadata?.fieldName,
|
||||||
|
)}-scope`;
|
||||||
|
|
||||||
const getDraftValueSelector = extractComponentSelector<
|
const getDraftValueSelector = extractComponentSelector<
|
||||||
FieldInputDraftValue<FieldValue> | undefined
|
FieldInputDraftValue<FieldValue> | undefined
|
||||||
@ -32,7 +36,7 @@ export const useInitDraftValueV2 = <FieldValue>() => {
|
|||||||
const recordFieldValue = snapshot
|
const recordFieldValue = snapshot
|
||||||
.getLoadable(
|
.getLoadable(
|
||||||
recordStoreFamilySelector<FieldValue>({
|
recordStoreFamilySelector<FieldValue>({
|
||||||
recordId: entityId,
|
recordId,
|
||||||
fieldName: fieldDefinition.metadata.fieldName,
|
fieldName: fieldDefinition.metadata.fieldName,
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
|
|||||||
@ -7,11 +7,11 @@ import { isDefined } from '~/utils/isDefined';
|
|||||||
import { FieldContext } from '../contexts/FieldContext';
|
import { FieldContext } from '../contexts/FieldContext';
|
||||||
|
|
||||||
export const useIsFieldEmpty = () => {
|
export const useIsFieldEmpty = () => {
|
||||||
const { entityId, fieldDefinition, overridenIsFieldEmpty } =
|
const { recordId, fieldDefinition, overridenIsFieldEmpty } =
|
||||||
useContext(FieldContext);
|
useContext(FieldContext);
|
||||||
|
|
||||||
const fieldValue = useRecordFieldValue(
|
const fieldValue = useRecordFieldValue(
|
||||||
entityId,
|
recordId,
|
||||||
fieldDefinition?.metadata?.fieldName ?? '',
|
fieldDefinition?.metadata?.fieldName ?? '',
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -44,7 +44,7 @@ import { isFieldTextValue } from '../types/guards/isFieldTextValue';
|
|||||||
|
|
||||||
export const usePersistField = () => {
|
export const usePersistField = () => {
|
||||||
const {
|
const {
|
||||||
entityId,
|
recordId,
|
||||||
fieldDefinition,
|
fieldDefinition,
|
||||||
useUpdateRecord = () => [],
|
useUpdateRecord = () => [],
|
||||||
} = useContext(FieldContext);
|
} = useContext(FieldContext);
|
||||||
@ -136,7 +136,7 @@ export const usePersistField = () => {
|
|||||||
if (isValuePersistable) {
|
if (isValuePersistable) {
|
||||||
const fieldName = fieldDefinition.metadata.fieldName;
|
const fieldName = fieldDefinition.metadata.fieldName;
|
||||||
set(
|
set(
|
||||||
recordStoreFamilySelector({ recordId: entityId, fieldName }),
|
recordStoreFamilySelector({ recordId, fieldName }),
|
||||||
valueToPersist,
|
valueToPersist,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -144,7 +144,7 @@ export const usePersistField = () => {
|
|||||||
const value = valueToPersist as EntityForSelect;
|
const value = valueToPersist as EntityForSelect;
|
||||||
updateRecord?.({
|
updateRecord?.({
|
||||||
variables: {
|
variables: {
|
||||||
where: { id: entityId },
|
where: { id: recordId },
|
||||||
updateOneRecordInput: {
|
updateOneRecordInput: {
|
||||||
[fieldName]: value,
|
[fieldName]: value,
|
||||||
[`${fieldName}Id`]: value?.id ?? null,
|
[`${fieldName}Id`]: value?.id ?? null,
|
||||||
@ -156,7 +156,7 @@ export const usePersistField = () => {
|
|||||||
|
|
||||||
updateRecord?.({
|
updateRecord?.({
|
||||||
variables: {
|
variables: {
|
||||||
where: { id: entityId },
|
where: { id: recordId },
|
||||||
updateOneRecordInput: {
|
updateOneRecordInput: {
|
||||||
[fieldName]: valueToPersist,
|
[fieldName]: valueToPersist,
|
||||||
},
|
},
|
||||||
@ -172,7 +172,7 @@ export const usePersistField = () => {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[entityId, fieldDefinition, updateRecord],
|
[recordId, fieldDefinition, updateRecord],
|
||||||
);
|
);
|
||||||
|
|
||||||
return persistField;
|
return persistField;
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import { isFieldBoolean } from '../types/guards/isFieldBoolean';
|
|||||||
|
|
||||||
export const useToggleEditOnlyInput = () => {
|
export const useToggleEditOnlyInput = () => {
|
||||||
const {
|
const {
|
||||||
entityId,
|
recordId,
|
||||||
fieldDefinition,
|
fieldDefinition,
|
||||||
useUpdateRecord = () => [],
|
useUpdateRecord = () => [],
|
||||||
} = useContext(FieldContext);
|
} = useContext(FieldContext);
|
||||||
@ -23,19 +23,17 @@ export const useToggleEditOnlyInput = () => {
|
|||||||
if (fieldIsBoolean) {
|
if (fieldIsBoolean) {
|
||||||
const fieldName = fieldDefinition.metadata.fieldName;
|
const fieldName = fieldDefinition.metadata.fieldName;
|
||||||
const oldValue = snapshot
|
const oldValue = snapshot
|
||||||
.getLoadable(
|
.getLoadable(recordStoreFamilySelector({ recordId, fieldName }))
|
||||||
recordStoreFamilySelector({ recordId: entityId, fieldName }),
|
|
||||||
)
|
|
||||||
.getValue();
|
.getValue();
|
||||||
const valueToPersist = !oldValue;
|
const valueToPersist = !oldValue;
|
||||||
set(
|
set(
|
||||||
recordStoreFamilySelector({ recordId: entityId, fieldName }),
|
recordStoreFamilySelector({ recordId, fieldName }),
|
||||||
valueToPersist,
|
valueToPersist,
|
||||||
);
|
);
|
||||||
|
|
||||||
updateRecord?.({
|
updateRecord?.({
|
||||||
variables: {
|
variables: {
|
||||||
where: { id: entityId },
|
where: { id: recordId },
|
||||||
updateOneRecordInput: {
|
updateOneRecordInput: {
|
||||||
[fieldName]: valueToPersist,
|
[fieldName]: valueToPersist,
|
||||||
},
|
},
|
||||||
@ -47,7 +45,7 @@ export const useToggleEditOnlyInput = () => {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[entityId, fieldDefinition, updateRecord],
|
[recordId, fieldDefinition, updateRecord],
|
||||||
);
|
);
|
||||||
|
|
||||||
return toggleField;
|
return toggleField;
|
||||||
|
|||||||
@ -6,18 +6,18 @@ import {
|
|||||||
type FieldContextProviderProps = {
|
type FieldContextProviderProps = {
|
||||||
children: React.ReactNode;
|
children: React.ReactNode;
|
||||||
fieldDefinition: GenericFieldContextType['fieldDefinition'];
|
fieldDefinition: GenericFieldContextType['fieldDefinition'];
|
||||||
entityId?: string;
|
recordId?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const FieldContextProvider = ({
|
export const FieldContextProvider = ({
|
||||||
children,
|
children,
|
||||||
fieldDefinition,
|
fieldDefinition,
|
||||||
entityId,
|
recordId,
|
||||||
}: FieldContextProviderProps) => {
|
}: FieldContextProviderProps) => {
|
||||||
return (
|
return (
|
||||||
<FieldContext.Provider
|
<FieldContext.Provider
|
||||||
value={{
|
value={{
|
||||||
entityId: entityId ?? '1',
|
recordId: recordId ?? '1',
|
||||||
isLabelIdentifier: false,
|
isLabelIdentifier: false,
|
||||||
recoilScopeId: '1',
|
recoilScopeId: '1',
|
||||||
hotkeyScope: 'hotkey-scope',
|
hotkeyScope: 'hotkey-scope',
|
||||||
|
|||||||
@ -24,11 +24,11 @@ import {
|
|||||||
|
|
||||||
const RelationFieldValueSetterEffect = () => {
|
const RelationFieldValueSetterEffect = () => {
|
||||||
const setEntity = useSetRecoilState(
|
const setEntity = useSetRecoilState(
|
||||||
recordStoreFamilyState(relationFromManyFieldDisplayMock.entityId),
|
recordStoreFamilyState(relationFromManyFieldDisplayMock.recordId),
|
||||||
);
|
);
|
||||||
|
|
||||||
const setRelationEntity = useSetRecoilState(
|
const setRelationEntity = useSetRecoilState(
|
||||||
recordStoreFamilyState(relationFromManyFieldDisplayMock.relationEntityId),
|
recordStoreFamilyState(relationFromManyFieldDisplayMock.relationRecordId),
|
||||||
);
|
);
|
||||||
|
|
||||||
const setRecordFieldValue = useSetRecordFieldValue();
|
const setRecordFieldValue = useSetRecordFieldValue();
|
||||||
@ -64,7 +64,7 @@ const meta: Meta = {
|
|||||||
<RecordFieldValueSelectorContextProvider>
|
<RecordFieldValueSelectorContextProvider>
|
||||||
<FieldContext.Provider
|
<FieldContext.Provider
|
||||||
value={{
|
value={{
|
||||||
entityId: relationFromManyFieldDisplayMock.entityId,
|
recordId: relationFromManyFieldDisplayMock.recordId,
|
||||||
basePathToShowPage: '/object-record/',
|
basePathToShowPage: '/object-record/',
|
||||||
isLabelIdentifier: false,
|
isLabelIdentifier: false,
|
||||||
fieldDefinition: {
|
fieldDefinition: {
|
||||||
|
|||||||
@ -114,8 +114,8 @@ export const otherPersonMock = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const relationFromManyFieldDisplayMock = {
|
export const relationFromManyFieldDisplayMock = {
|
||||||
entityId: '20202020-2d40-4e49-8df4-9c6a049191df',
|
recordId: '20202020-2d40-4e49-8df4-9c6a049191df',
|
||||||
relationEntityId: '20202020-c21e-4ec2-873b-de4264d89025',
|
relationRecordId: '20202020-c21e-4ec2-873b-de4264d89025',
|
||||||
entityValue: {
|
entityValue: {
|
||||||
__typename: 'Person',
|
__typename: 'Person',
|
||||||
asd: '',
|
asd: '',
|
||||||
|
|||||||
@ -13,7 +13,7 @@ import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata';
|
|||||||
import { isFieldAddress } from '../../types/guards/isFieldAddress';
|
import { isFieldAddress } from '../../types/guards/isFieldAddress';
|
||||||
|
|
||||||
export const useAddressField = () => {
|
export const useAddressField = () => {
|
||||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||||
|
|
||||||
assertFieldMetadata(
|
assertFieldMetadata(
|
||||||
FieldMetadataType.Address,
|
FieldMetadataType.Address,
|
||||||
@ -25,7 +25,7 @@ export const useAddressField = () => {
|
|||||||
|
|
||||||
const [fieldValue, setFieldValue] = useRecoilState<FieldAddressValue>(
|
const [fieldValue, setFieldValue] = useRecoilState<FieldAddressValue>(
|
||||||
recordStoreFamilySelector({
|
recordStoreFamilySelector({
|
||||||
recordId: entityId,
|
recordId,
|
||||||
fieldName: fieldName,
|
fieldName: fieldName,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
@ -41,7 +41,7 @@ export const useAddressField = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const { setDraftValue, getDraftValueSelector } =
|
const { setDraftValue, getDraftValueSelector } =
|
||||||
useRecordFieldInput<FieldAddressValue>(`${entityId}-${fieldName}`);
|
useRecordFieldInput<FieldAddressValue>(`${recordId}-${fieldName}`);
|
||||||
|
|
||||||
const draftValue = useRecoilValue(getDraftValueSelector());
|
const draftValue = useRecoilValue(getDraftValueSelector());
|
||||||
|
|
||||||
|
|||||||
@ -6,12 +6,12 @@ import { FieldContext } from '../../contexts/FieldContext';
|
|||||||
import { FieldAddressValue } from '../../types/FieldMetadata';
|
import { FieldAddressValue } from '../../types/FieldMetadata';
|
||||||
|
|
||||||
export const useAddressFieldDisplay = () => {
|
export const useAddressFieldDisplay = () => {
|
||||||
const { entityId, fieldDefinition } = useContext(FieldContext);
|
const { recordId, fieldDefinition } = useContext(FieldContext);
|
||||||
|
|
||||||
const fieldName = fieldDefinition.metadata.fieldName;
|
const fieldName = fieldDefinition.metadata.fieldName;
|
||||||
|
|
||||||
const fieldValue = useRecordFieldValue<FieldAddressValue | undefined>(
|
const fieldValue = useRecordFieldValue<FieldAddressValue | undefined>(
|
||||||
entityId,
|
recordId,
|
||||||
fieldName,
|
fieldName,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata';
|
|||||||
import { isFieldBoolean } from '../../types/guards/isFieldBoolean';
|
import { isFieldBoolean } from '../../types/guards/isFieldBoolean';
|
||||||
|
|
||||||
export const useBooleanField = () => {
|
export const useBooleanField = () => {
|
||||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||||
|
|
||||||
assertFieldMetadata(
|
assertFieldMetadata(
|
||||||
FieldMetadataType.Boolean,
|
FieldMetadataType.Boolean,
|
||||||
@ -21,7 +21,7 @@ export const useBooleanField = () => {
|
|||||||
|
|
||||||
const [fieldValue, setFieldValue] = useRecoilState<boolean>(
|
const [fieldValue, setFieldValue] = useRecoilState<boolean>(
|
||||||
recordStoreFamilySelector({
|
recordStoreFamilySelector({
|
||||||
recordId: entityId,
|
recordId,
|
||||||
fieldName: fieldName,
|
fieldName: fieldName,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|||||||
@ -5,12 +5,12 @@ import { useRecordFieldValue } from '@/object-record/record-store/contexts/Recor
|
|||||||
import { FieldContext } from '../../contexts/FieldContext';
|
import { FieldContext } from '../../contexts/FieldContext';
|
||||||
|
|
||||||
export const useBooleanFieldDisplay = () => {
|
export const useBooleanFieldDisplay = () => {
|
||||||
const { entityId, fieldDefinition } = useContext(FieldContext);
|
const { recordId, fieldDefinition } = useContext(FieldContext);
|
||||||
|
|
||||||
const fieldName = fieldDefinition.metadata.fieldName;
|
const fieldName = fieldDefinition.metadata.fieldName;
|
||||||
|
|
||||||
const fieldValue = useRecordFieldValue<boolean | undefined>(
|
const fieldValue = useRecordFieldValue<boolean | undefined>(
|
||||||
entityId,
|
recordId,
|
||||||
fieldName,
|
fieldName,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import { recordStoreFamilyState } from '@/object-record/record-store/states/reco
|
|||||||
import { FieldContext } from '../../contexts/FieldContext';
|
import { FieldContext } from '../../contexts/FieldContext';
|
||||||
|
|
||||||
export const useChipField = () => {
|
export const useChipField = () => {
|
||||||
const { entityId, fieldDefinition } = useContext(FieldContext);
|
const { recordId, fieldDefinition } = useContext(FieldContext);
|
||||||
|
|
||||||
const objectNameSingular =
|
const objectNameSingular =
|
||||||
isFieldText(fieldDefinition) ||
|
isFieldText(fieldDefinition) ||
|
||||||
@ -18,7 +18,7 @@ export const useChipField = () => {
|
|||||||
? fieldDefinition.metadata.objectMetadataNameSingular
|
? fieldDefinition.metadata.objectMetadataNameSingular
|
||||||
: undefined;
|
: undefined;
|
||||||
|
|
||||||
const record = useRecoilValue(recordStoreFamilyState(entityId));
|
const record = useRecoilValue(recordStoreFamilyState(recordId));
|
||||||
|
|
||||||
return {
|
return {
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
|
|||||||
@ -12,7 +12,7 @@ import { isFieldActor } from '@/object-record/record-field/types/guards/isFieldA
|
|||||||
import { FieldContext } from '../../contexts/FieldContext';
|
import { FieldContext } from '../../contexts/FieldContext';
|
||||||
|
|
||||||
export const useChipFieldDisplay = () => {
|
export const useChipFieldDisplay = () => {
|
||||||
const { entityId, fieldDefinition, isLabelIdentifier } =
|
const { recordId, fieldDefinition, isLabelIdentifier } =
|
||||||
useContext(FieldContext);
|
useContext(FieldContext);
|
||||||
|
|
||||||
const { chipGeneratorPerObjectPerField } = useContext(
|
const { chipGeneratorPerObjectPerField } = useContext(
|
||||||
@ -31,7 +31,7 @@ export const useChipFieldDisplay = () => {
|
|||||||
? fieldDefinition.metadata.objectMetadataNameSingular
|
? fieldDefinition.metadata.objectMetadataNameSingular
|
||||||
: undefined;
|
: undefined;
|
||||||
|
|
||||||
const recordValue = useRecordValue(entityId);
|
const recordValue = useRecordValue(recordId);
|
||||||
|
|
||||||
if (!isNonEmptyString(objectNameSingular)) {
|
if (!isNonEmptyString(objectNameSingular)) {
|
||||||
throw new Error('Object metadata name singular is not a non-empty string');
|
throw new Error('Object metadata name singular is not a non-empty string');
|
||||||
|
|||||||
@ -14,7 +14,7 @@ import { isFieldCurrency } from '../../types/guards/isFieldCurrency';
|
|||||||
import { isFieldCurrencyValue } from '../../types/guards/isFieldCurrencyValue';
|
import { isFieldCurrencyValue } from '../../types/guards/isFieldCurrencyValue';
|
||||||
|
|
||||||
export const useCurrencyField = () => {
|
export const useCurrencyField = () => {
|
||||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||||
|
|
||||||
assertFieldMetadata(
|
assertFieldMetadata(
|
||||||
FieldMetadataType.Currency,
|
FieldMetadataType.Currency,
|
||||||
@ -26,7 +26,7 @@ export const useCurrencyField = () => {
|
|||||||
|
|
||||||
const [fieldValue, setFieldValue] = useRecoilState<FieldCurrencyValue>(
|
const [fieldValue, setFieldValue] = useRecoilState<FieldCurrencyValue>(
|
||||||
recordStoreFamilySelector({
|
recordStoreFamilySelector({
|
||||||
recordId: entityId,
|
recordId,
|
||||||
fieldName: fieldName,
|
fieldName: fieldName,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
@ -56,7 +56,7 @@ export const useCurrencyField = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const { setDraftValue, getDraftValueSelector } =
|
const { setDraftValue, getDraftValueSelector } =
|
||||||
useRecordFieldInput<FieldCurrencyValue>(`${entityId}-${fieldName}`);
|
useRecordFieldInput<FieldCurrencyValue>(`${recordId}-${fieldName}`);
|
||||||
|
|
||||||
const draftValue = useRecoilValue(getDraftValueSelector());
|
const draftValue = useRecoilValue(getDraftValueSelector());
|
||||||
|
|
||||||
|
|||||||
@ -6,12 +6,12 @@ import { FieldContext } from '../../contexts/FieldContext';
|
|||||||
import { FieldCurrencyValue } from '../../types/FieldMetadata';
|
import { FieldCurrencyValue } from '../../types/FieldMetadata';
|
||||||
|
|
||||||
export const useCurrencyFieldDisplay = () => {
|
export const useCurrencyFieldDisplay = () => {
|
||||||
const { entityId, fieldDefinition } = useContext(FieldContext);
|
const { recordId, fieldDefinition } = useContext(FieldContext);
|
||||||
|
|
||||||
const fieldName = fieldDefinition.metadata.fieldName;
|
const fieldName = fieldDefinition.metadata.fieldName;
|
||||||
|
|
||||||
const fieldValue = useRecordFieldValue<FieldCurrencyValue | undefined>(
|
const fieldValue = useRecordFieldValue<FieldCurrencyValue | undefined>(
|
||||||
entityId,
|
recordId,
|
||||||
fieldName,
|
fieldName,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import { FieldContext } from '../../contexts/FieldContext';
|
|||||||
import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata';
|
import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata';
|
||||||
|
|
||||||
export const useDateField = () => {
|
export const useDateField = () => {
|
||||||
const { entityId, fieldDefinition, hotkeyScope, clearable } =
|
const { recordId, fieldDefinition, hotkeyScope, clearable } =
|
||||||
useContext(FieldContext);
|
useContext(FieldContext);
|
||||||
|
|
||||||
assertFieldMetadata(FieldMetadataType.Date, isFieldDate, fieldDefinition);
|
assertFieldMetadata(FieldMetadataType.Date, isFieldDate, fieldDefinition);
|
||||||
@ -20,13 +20,13 @@ export const useDateField = () => {
|
|||||||
|
|
||||||
const [fieldValue, setFieldValue] = useRecoilState<string>(
|
const [fieldValue, setFieldValue] = useRecoilState<string>(
|
||||||
recordStoreFamilySelector({
|
recordStoreFamilySelector({
|
||||||
recordId: entityId,
|
recordId,
|
||||||
fieldName: fieldName,
|
fieldName: fieldName,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
const { setDraftValue } = useRecordFieldInput<FieldDateValue>(
|
const { setDraftValue } = useRecordFieldInput<FieldDateValue>(
|
||||||
`${entityId}-${fieldName}`,
|
`${recordId}-${fieldName}`,
|
||||||
);
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@ -5,13 +5,13 @@ import { useRecordFieldValue } from '@/object-record/record-store/contexts/Recor
|
|||||||
import { FieldContext } from '../../contexts/FieldContext';
|
import { FieldContext } from '../../contexts/FieldContext';
|
||||||
|
|
||||||
export const useDateFieldDisplay = () => {
|
export const useDateFieldDisplay = () => {
|
||||||
const { entityId, fieldDefinition, hotkeyScope, clearable } =
|
const { recordId, fieldDefinition, hotkeyScope, clearable } =
|
||||||
useContext(FieldContext);
|
useContext(FieldContext);
|
||||||
|
|
||||||
const fieldName = fieldDefinition.metadata.fieldName;
|
const fieldName = fieldDefinition.metadata.fieldName;
|
||||||
|
|
||||||
const fieldValue = useRecordFieldValue<string | undefined>(
|
const fieldValue = useRecordFieldValue<string | undefined>(
|
||||||
entityId,
|
recordId,
|
||||||
fieldName,
|
fieldName,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata';
|
|||||||
import { isFieldDateTime } from '../../types/guards/isFieldDateTime';
|
import { isFieldDateTime } from '../../types/guards/isFieldDateTime';
|
||||||
|
|
||||||
export const useDateTimeField = () => {
|
export const useDateTimeField = () => {
|
||||||
const { entityId, fieldDefinition, hotkeyScope, clearable } =
|
const { recordId, fieldDefinition, hotkeyScope, clearable } =
|
||||||
useContext(FieldContext);
|
useContext(FieldContext);
|
||||||
|
|
||||||
assertFieldMetadata(
|
assertFieldMetadata(
|
||||||
@ -24,13 +24,13 @@ export const useDateTimeField = () => {
|
|||||||
|
|
||||||
const [fieldValue, setFieldValue] = useRecoilState<string>(
|
const [fieldValue, setFieldValue] = useRecoilState<string>(
|
||||||
recordStoreFamilySelector({
|
recordStoreFamilySelector({
|
||||||
recordId: entityId,
|
recordId,
|
||||||
fieldName: fieldName,
|
fieldName: fieldName,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
const { setDraftValue } = useRecordFieldInput<FieldDateTimeValue>(
|
const { setDraftValue } = useRecordFieldInput<FieldDateTimeValue>(
|
||||||
`${entityId}-${fieldName}`,
|
`${recordId}-${fieldName}`,
|
||||||
);
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@ -5,13 +5,13 @@ import { useRecordFieldValue } from '@/object-record/record-store/contexts/Recor
|
|||||||
import { FieldContext } from '../../contexts/FieldContext';
|
import { FieldContext } from '../../contexts/FieldContext';
|
||||||
|
|
||||||
export const useDateTimeFieldDisplay = () => {
|
export const useDateTimeFieldDisplay = () => {
|
||||||
const { entityId, fieldDefinition, hotkeyScope, clearable } =
|
const { recordId, fieldDefinition, hotkeyScope, clearable } =
|
||||||
useContext(FieldContext);
|
useContext(FieldContext);
|
||||||
|
|
||||||
const fieldName = fieldDefinition.metadata.fieldName;
|
const fieldName = fieldDefinition.metadata.fieldName;
|
||||||
|
|
||||||
const fieldValue = useRecordFieldValue<string | undefined>(
|
const fieldValue = useRecordFieldValue<string | undefined>(
|
||||||
entityId,
|
recordId,
|
||||||
fieldName,
|
fieldName,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata';
|
|||||||
import { isFieldEmail } from '../../types/guards/isFieldEmail';
|
import { isFieldEmail } from '../../types/guards/isFieldEmail';
|
||||||
|
|
||||||
export const useEmailField = () => {
|
export const useEmailField = () => {
|
||||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||||
|
|
||||||
assertFieldMetadata(FieldMetadataType.Email, isFieldEmail, fieldDefinition);
|
assertFieldMetadata(FieldMetadataType.Email, isFieldEmail, fieldDefinition);
|
||||||
|
|
||||||
@ -19,13 +19,13 @@ export const useEmailField = () => {
|
|||||||
|
|
||||||
const [fieldValue, setFieldValue] = useRecoilState<string>(
|
const [fieldValue, setFieldValue] = useRecoilState<string>(
|
||||||
recordStoreFamilySelector({
|
recordStoreFamilySelector({
|
||||||
recordId: entityId,
|
recordId,
|
||||||
fieldName: fieldName,
|
fieldName: fieldName,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
const { setDraftValue, getDraftValueSelector } =
|
const { setDraftValue, getDraftValueSelector } =
|
||||||
useRecordFieldInput<FieldEmailValue>(`${entityId}-${fieldName}`);
|
useRecordFieldInput<FieldEmailValue>(`${recordId}-${fieldName}`);
|
||||||
|
|
||||||
const draftValue = useRecoilValue(getDraftValueSelector());
|
const draftValue = useRecoilValue(getDraftValueSelector());
|
||||||
|
|
||||||
|
|||||||
@ -5,11 +5,11 @@ import { useRecordFieldValue } from '@/object-record/record-store/contexts/Recor
|
|||||||
import { FieldContext } from '../../contexts/FieldContext';
|
import { FieldContext } from '../../contexts/FieldContext';
|
||||||
|
|
||||||
export const useEmailFieldDisplay = () => {
|
export const useEmailFieldDisplay = () => {
|
||||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||||
|
|
||||||
const fieldName = fieldDefinition.metadata.fieldName;
|
const fieldName = fieldDefinition.metadata.fieldName;
|
||||||
|
|
||||||
const fieldValue = useRecordFieldValue<string>(entityId, fieldName);
|
const fieldValue = useRecordFieldValue<string>(recordId, fieldName);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
fieldDefinition,
|
fieldDefinition,
|
||||||
|
|||||||
@ -13,7 +13,7 @@ import { isFieldFullName } from '../../types/guards/isFieldFullName';
|
|||||||
import { isFieldFullNameValue } from '../../types/guards/isFieldFullNameValue';
|
import { isFieldFullNameValue } from '../../types/guards/isFieldFullNameValue';
|
||||||
|
|
||||||
export const useFullNameField = () => {
|
export const useFullNameField = () => {
|
||||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||||
|
|
||||||
assertFieldMetadata(
|
assertFieldMetadata(
|
||||||
FieldMetadataType.FullName,
|
FieldMetadataType.FullName,
|
||||||
@ -25,7 +25,7 @@ export const useFullNameField = () => {
|
|||||||
|
|
||||||
const [fieldValue, setFieldValue] = useRecoilState<FieldFullNameValue>(
|
const [fieldValue, setFieldValue] = useRecoilState<FieldFullNameValue>(
|
||||||
recordStoreFamilySelector({
|
recordStoreFamilySelector({
|
||||||
recordId: entityId,
|
recordId,
|
||||||
fieldName: fieldName,
|
fieldName: fieldName,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
@ -41,7 +41,7 @@ export const useFullNameField = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const { setDraftValue, getDraftValueSelector } =
|
const { setDraftValue, getDraftValueSelector } =
|
||||||
useRecordFieldInput<FieldFullNameValue>(`${entityId}-${fieldName}`);
|
useRecordFieldInput<FieldFullNameValue>(`${recordId}-${fieldName}`);
|
||||||
|
|
||||||
const draftValue = useRecoilValue(getDraftValueSelector());
|
const draftValue = useRecoilValue(getDraftValueSelector());
|
||||||
|
|
||||||
|
|||||||
@ -6,12 +6,12 @@ import { useRecordFieldValue } from '@/object-record/record-store/contexts/Recor
|
|||||||
import { FieldContext } from '../../contexts/FieldContext';
|
import { FieldContext } from '../../contexts/FieldContext';
|
||||||
|
|
||||||
export const useFullNameFieldDisplay = () => {
|
export const useFullNameFieldDisplay = () => {
|
||||||
const { entityId, fieldDefinition } = useContext(FieldContext);
|
const { recordId, fieldDefinition } = useContext(FieldContext);
|
||||||
|
|
||||||
const fieldName = fieldDefinition.metadata.fieldName;
|
const fieldName = fieldDefinition.metadata.fieldName;
|
||||||
|
|
||||||
const fieldValue = useRecordFieldValue<FieldFullNameValue | undefined>(
|
const fieldValue = useRecordFieldValue<FieldFullNameValue | undefined>(
|
||||||
entityId,
|
recordId,
|
||||||
fieldName,
|
fieldName,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -12,7 +12,7 @@ import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata';
|
|||||||
import { isFieldRawJson } from '../../types/guards/isFieldRawJson';
|
import { isFieldRawJson } from '../../types/guards/isFieldRawJson';
|
||||||
|
|
||||||
export const useJsonField = () => {
|
export const useJsonField = () => {
|
||||||
const { entityId, fieldDefinition, hotkeyScope, maxWidth } =
|
const { recordId, fieldDefinition, hotkeyScope, maxWidth } =
|
||||||
useContext(FieldContext);
|
useContext(FieldContext);
|
||||||
|
|
||||||
assertFieldMetadata(
|
assertFieldMetadata(
|
||||||
@ -25,7 +25,7 @@ export const useJsonField = () => {
|
|||||||
|
|
||||||
const [fieldValue, setFieldValue] = useRecoilState<FieldJsonValue>(
|
const [fieldValue, setFieldValue] = useRecoilState<FieldJsonValue>(
|
||||||
recordStoreFamilySelector({
|
recordStoreFamilySelector({
|
||||||
recordId: entityId,
|
recordId,
|
||||||
fieldName: fieldName,
|
fieldName: fieldName,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
@ -43,7 +43,7 @@ export const useJsonField = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const { setDraftValue, getDraftValueSelector } =
|
const { setDraftValue, getDraftValueSelector } =
|
||||||
useRecordFieldInput<FieldJsonValue>(`${entityId}-${fieldName}`);
|
useRecordFieldInput<FieldJsonValue>(`${recordId}-${fieldName}`);
|
||||||
|
|
||||||
const draftValue = useRecoilValue(getDraftValueSelector());
|
const draftValue = useRecoilValue(getDraftValueSelector());
|
||||||
|
|
||||||
|
|||||||
@ -6,12 +6,12 @@ import { useRecordFieldValue } from '@/object-record/record-store/contexts/Recor
|
|||||||
import { FieldContext } from '../../contexts/FieldContext';
|
import { FieldContext } from '../../contexts/FieldContext';
|
||||||
|
|
||||||
export const useJsonFieldDisplay = () => {
|
export const useJsonFieldDisplay = () => {
|
||||||
const { entityId, fieldDefinition, maxWidth } = useContext(FieldContext);
|
const { recordId, fieldDefinition, maxWidth } = useContext(FieldContext);
|
||||||
|
|
||||||
const fieldName = fieldDefinition.metadata.fieldName;
|
const fieldName = fieldDefinition.metadata.fieldName;
|
||||||
|
|
||||||
const fieldValue = useRecordFieldValue<FieldJsonValue | undefined>(
|
const fieldValue = useRecordFieldValue<FieldJsonValue | undefined>(
|
||||||
entityId,
|
recordId,
|
||||||
fieldName,
|
fieldName,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -13,7 +13,7 @@ import { isFieldLink } from '../../types/guards/isFieldLink';
|
|||||||
import { isFieldLinkValue } from '../../types/guards/isFieldLinkValue';
|
import { isFieldLinkValue } from '../../types/guards/isFieldLinkValue';
|
||||||
|
|
||||||
export const useLinkField = () => {
|
export const useLinkField = () => {
|
||||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||||
|
|
||||||
assertFieldMetadata(FieldMetadataType.Link, isFieldLink, fieldDefinition);
|
assertFieldMetadata(FieldMetadataType.Link, isFieldLink, fieldDefinition);
|
||||||
|
|
||||||
@ -21,13 +21,13 @@ export const useLinkField = () => {
|
|||||||
|
|
||||||
const [fieldValue, setFieldValue] = useRecoilState<FieldLinkValue>(
|
const [fieldValue, setFieldValue] = useRecoilState<FieldLinkValue>(
|
||||||
recordStoreFamilySelector({
|
recordStoreFamilySelector({
|
||||||
recordId: entityId,
|
recordId,
|
||||||
fieldName: fieldName,
|
fieldName: fieldName,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
const { setDraftValue, getDraftValueSelector } =
|
const { setDraftValue, getDraftValueSelector } =
|
||||||
useRecordFieldInput<FieldLinkValue>(`${entityId}-${fieldName}`);
|
useRecordFieldInput<FieldLinkValue>(`${recordId}-${fieldName}`);
|
||||||
|
|
||||||
const draftValue = useRecoilValue(getDraftValueSelector());
|
const draftValue = useRecoilValue(getDraftValueSelector());
|
||||||
|
|
||||||
|
|||||||
@ -6,11 +6,11 @@ import { FieldContext } from '../../contexts/FieldContext';
|
|||||||
import { FieldLinkValue } from '../../types/FieldMetadata';
|
import { FieldLinkValue } from '../../types/FieldMetadata';
|
||||||
|
|
||||||
export const useLinkFieldDisplay = () => {
|
export const useLinkFieldDisplay = () => {
|
||||||
const { entityId, fieldDefinition } = useContext(FieldContext);
|
const { recordId, fieldDefinition } = useContext(FieldContext);
|
||||||
|
|
||||||
const fieldName = fieldDefinition.metadata.fieldName;
|
const fieldName = fieldDefinition.metadata.fieldName;
|
||||||
const fieldValue = useRecordFieldValue<FieldLinkValue | undefined>(
|
const fieldValue = useRecordFieldValue<FieldLinkValue | undefined>(
|
||||||
entityId,
|
recordId,
|
||||||
fieldName,
|
fieldName,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -13,7 +13,7 @@ import { FieldContext } from '../../contexts/FieldContext';
|
|||||||
import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata';
|
import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata';
|
||||||
|
|
||||||
export const useLinksField = () => {
|
export const useLinksField = () => {
|
||||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||||
|
|
||||||
assertFieldMetadata(FieldMetadataType.Links, isFieldLinks, fieldDefinition);
|
assertFieldMetadata(FieldMetadataType.Links, isFieldLinks, fieldDefinition);
|
||||||
|
|
||||||
@ -21,13 +21,13 @@ export const useLinksField = () => {
|
|||||||
|
|
||||||
const [fieldValue, setFieldValue] = useRecoilState<FieldLinksValue>(
|
const [fieldValue, setFieldValue] = useRecoilState<FieldLinksValue>(
|
||||||
recordStoreFamilySelector({
|
recordStoreFamilySelector({
|
||||||
recordId: entityId,
|
recordId,
|
||||||
fieldName: fieldName,
|
fieldName: fieldName,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
const { setDraftValue, getDraftValueSelector } =
|
const { setDraftValue, getDraftValueSelector } =
|
||||||
useRecordFieldInput<FieldLinksValue>(`${entityId}-${fieldName}`);
|
useRecordFieldInput<FieldLinksValue>(`${recordId}-${fieldName}`);
|
||||||
|
|
||||||
const draftValue = useRecoilValue(getDraftValueSelector());
|
const draftValue = useRecoilValue(getDraftValueSelector());
|
||||||
|
|
||||||
|
|||||||
@ -6,12 +6,12 @@ import { useRecordFieldValue } from '@/object-record/record-store/contexts/Recor
|
|||||||
import { FieldContext } from '../../contexts/FieldContext';
|
import { FieldContext } from '../../contexts/FieldContext';
|
||||||
|
|
||||||
export const useLinksFieldDisplay = () => {
|
export const useLinksFieldDisplay = () => {
|
||||||
const { entityId, fieldDefinition } = useContext(FieldContext);
|
const { recordId, fieldDefinition } = useContext(FieldContext);
|
||||||
|
|
||||||
const fieldName = fieldDefinition.metadata.fieldName;
|
const fieldName = fieldDefinition.metadata.fieldName;
|
||||||
|
|
||||||
const fieldValue = useRecordFieldValue<FieldLinksValue | undefined>(
|
const fieldValue = useRecordFieldValue<FieldLinksValue | undefined>(
|
||||||
entityId,
|
recordId,
|
||||||
fieldName,
|
fieldName,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -12,7 +12,7 @@ import { recordStoreFamilySelector } from '@/object-record/record-store/states/s
|
|||||||
import { FieldMetadataType } from '~/generated/graphql';
|
import { FieldMetadataType } from '~/generated/graphql';
|
||||||
|
|
||||||
export const useMultiSelectField = () => {
|
export const useMultiSelectField = () => {
|
||||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||||
|
|
||||||
assertFieldMetadata(
|
assertFieldMetadata(
|
||||||
FieldMetadataType.MultiSelect,
|
FieldMetadataType.MultiSelect,
|
||||||
@ -24,7 +24,7 @@ export const useMultiSelectField = () => {
|
|||||||
|
|
||||||
const [fieldValues, setFieldValue] = useRecoilState<FieldMultiSelectValue>(
|
const [fieldValues, setFieldValue] = useRecoilState<FieldMultiSelectValue>(
|
||||||
recordStoreFamilySelector({
|
recordStoreFamilySelector({
|
||||||
recordId: entityId,
|
recordId,
|
||||||
fieldName: fieldName,
|
fieldName: fieldName,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
@ -35,7 +35,7 @@ export const useMultiSelectField = () => {
|
|||||||
const persistField = usePersistField();
|
const persistField = usePersistField();
|
||||||
|
|
||||||
const { setDraftValue, getDraftValueSelector } =
|
const { setDraftValue, getDraftValueSelector } =
|
||||||
useRecordFieldInput<FieldMultiSelectValue>(`${entityId}-${fieldName}`);
|
useRecordFieldInput<FieldMultiSelectValue>(`${recordId}-${fieldName}`);
|
||||||
const draftValue = useRecoilValue(getDraftValueSelector());
|
const draftValue = useRecoilValue(getDraftValueSelector());
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@ -9,12 +9,12 @@ import {
|
|||||||
import { useRecordFieldValue } from '@/object-record/record-store/contexts/RecordFieldValueSelectorContext';
|
import { useRecordFieldValue } from '@/object-record/record-store/contexts/RecordFieldValueSelectorContext';
|
||||||
|
|
||||||
export const useMultiSelectFieldDisplay = () => {
|
export const useMultiSelectFieldDisplay = () => {
|
||||||
const { entityId, fieldDefinition } = useContext(FieldContext);
|
const { recordId, fieldDefinition } = useContext(FieldContext);
|
||||||
|
|
||||||
const { fieldName } = fieldDefinition.metadata;
|
const { fieldName } = fieldDefinition.metadata;
|
||||||
|
|
||||||
const fieldValue = useRecordFieldValue<FieldMultiSelectValue | undefined>(
|
const fieldValue = useRecordFieldValue<FieldMultiSelectValue | undefined>(
|
||||||
entityId,
|
recordId,
|
||||||
fieldName,
|
fieldName,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -16,7 +16,7 @@ import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata';
|
|||||||
import { isFieldNumber } from '../../types/guards/isFieldNumber';
|
import { isFieldNumber } from '../../types/guards/isFieldNumber';
|
||||||
|
|
||||||
export const useNumberField = () => {
|
export const useNumberField = () => {
|
||||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||||
|
|
||||||
assertFieldMetadata(FieldMetadataType.Number, isFieldNumber, fieldDefinition);
|
assertFieldMetadata(FieldMetadataType.Number, isFieldNumber, fieldDefinition);
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ export const useNumberField = () => {
|
|||||||
|
|
||||||
const [fieldValue, setFieldValue] = useRecoilState<number | null>(
|
const [fieldValue, setFieldValue] = useRecoilState<number | null>(
|
||||||
recordStoreFamilySelector({
|
recordStoreFamilySelector({
|
||||||
recordId: entityId,
|
recordId,
|
||||||
fieldName: fieldName,
|
fieldName: fieldName,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
@ -42,7 +42,7 @@ export const useNumberField = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const { setDraftValue, getDraftValueSelector } =
|
const { setDraftValue, getDraftValueSelector } =
|
||||||
useRecordFieldInput<FieldNumberValue>(`${entityId}-${fieldName}`);
|
useRecordFieldInput<FieldNumberValue>(`${recordId}-${fieldName}`);
|
||||||
|
|
||||||
const draftValue = useRecoilValue(getDraftValueSelector());
|
const draftValue = useRecoilValue(getDraftValueSelector());
|
||||||
|
|
||||||
|
|||||||
@ -8,12 +8,12 @@ import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata';
|
|||||||
import { isFieldNumber } from '../../types/guards/isFieldNumber';
|
import { isFieldNumber } from '../../types/guards/isFieldNumber';
|
||||||
|
|
||||||
export const useNumberFieldDisplay = () => {
|
export const useNumberFieldDisplay = () => {
|
||||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||||
|
|
||||||
assertFieldMetadata(FieldMetadataType.Number, isFieldNumber, fieldDefinition);
|
assertFieldMetadata(FieldMetadataType.Number, isFieldNumber, fieldDefinition);
|
||||||
|
|
||||||
const fieldName = fieldDefinition.metadata.fieldName;
|
const fieldName = fieldDefinition.metadata.fieldName;
|
||||||
const fieldValue = useRecordFieldValue<number | null>(entityId, fieldName);
|
const fieldValue = useRecordFieldValue<number | null>(recordId, fieldName);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
fieldDefinition,
|
fieldDefinition,
|
||||||
|
|||||||
@ -14,7 +14,7 @@ import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata';
|
|||||||
import { isFieldPhone } from '../../types/guards/isFieldPhone';
|
import { isFieldPhone } from '../../types/guards/isFieldPhone';
|
||||||
|
|
||||||
export const usePhoneField = () => {
|
export const usePhoneField = () => {
|
||||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// TODO: temporary - remove when 'Phone' field in 'Person' object
|
// TODO: temporary - remove when 'Phone' field in 'Person' object
|
||||||
@ -32,7 +32,7 @@ export const usePhoneField = () => {
|
|||||||
|
|
||||||
const [fieldValue, setFieldValue] = useRecoilState<string>(
|
const [fieldValue, setFieldValue] = useRecoilState<string>(
|
||||||
recordStoreFamilySelector({
|
recordStoreFamilySelector({
|
||||||
recordId: entityId,
|
recordId,
|
||||||
fieldName: fieldName,
|
fieldName: fieldName,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
@ -45,7 +45,7 @@ export const usePhoneField = () => {
|
|||||||
persistField(newPhoneValue);
|
persistField(newPhoneValue);
|
||||||
};
|
};
|
||||||
const { setDraftValue, getDraftValueSelector } =
|
const { setDraftValue, getDraftValueSelector } =
|
||||||
useRecordFieldInput<FieldPhoneValue>(`${entityId}-${fieldName}`);
|
useRecordFieldInput<FieldPhoneValue>(`${recordId}-${fieldName}`);
|
||||||
|
|
||||||
const draftValue = useRecoilValue(getDraftValueSelector());
|
const draftValue = useRecoilValue(getDraftValueSelector());
|
||||||
|
|
||||||
|
|||||||
@ -5,11 +5,11 @@ import { useRecordFieldValue } from '@/object-record/record-store/contexts/Recor
|
|||||||
import { FieldContext } from '../../contexts/FieldContext';
|
import { FieldContext } from '../../contexts/FieldContext';
|
||||||
|
|
||||||
export const usePhoneFieldDisplay = () => {
|
export const usePhoneFieldDisplay = () => {
|
||||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||||
|
|
||||||
const fieldName = fieldDefinition.metadata.fieldName;
|
const fieldName = fieldDefinition.metadata.fieldName;
|
||||||
|
|
||||||
const fieldValue = useRecordFieldValue<string>(entityId, fieldName);
|
const fieldValue = useRecordFieldValue<string>(recordId, fieldName);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
fieldDefinition,
|
fieldDefinition,
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata';
|
|||||||
import { isFieldRating } from '../../types/guards/isFieldRating';
|
import { isFieldRating } from '../../types/guards/isFieldRating';
|
||||||
|
|
||||||
export const useRatingField = () => {
|
export const useRatingField = () => {
|
||||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||||
|
|
||||||
assertFieldMetadata(FieldMetadataType.Rating, isFieldRating, fieldDefinition);
|
assertFieldMetadata(FieldMetadataType.Rating, isFieldRating, fieldDefinition);
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ export const useRatingField = () => {
|
|||||||
|
|
||||||
const [fieldValue, setFieldValue] = useRecoilState<FieldRatingValue>(
|
const [fieldValue, setFieldValue] = useRecoilState<FieldRatingValue>(
|
||||||
recordStoreFamilySelector({
|
recordStoreFamilySelector({
|
||||||
recordId: entityId,
|
recordId,
|
||||||
fieldName: fieldName,
|
fieldName: fieldName,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|||||||
@ -6,11 +6,11 @@ import { useRecordFieldValue } from '@/object-record/record-store/contexts/Recor
|
|||||||
import { FieldContext } from '../../contexts/FieldContext';
|
import { FieldContext } from '../../contexts/FieldContext';
|
||||||
|
|
||||||
export const useRatingFieldDisplay = () => {
|
export const useRatingFieldDisplay = () => {
|
||||||
const { entityId, fieldDefinition } = useContext(FieldContext);
|
const { recordId, fieldDefinition } = useContext(FieldContext);
|
||||||
|
|
||||||
const fieldName = fieldDefinition.metadata.fieldName;
|
const fieldName = fieldDefinition.metadata.fieldName;
|
||||||
|
|
||||||
const fieldValue = useRecordFieldValue(entityId, fieldName) as
|
const fieldValue = useRecordFieldValue(recordId, fieldName) as
|
||||||
| FieldRatingValue
|
| FieldRatingValue
|
||||||
| undefined;
|
| undefined;
|
||||||
|
|
||||||
|
|||||||
@ -15,7 +15,7 @@ import { isFieldRelation } from '../../types/guards/isFieldRelation';
|
|||||||
export const useRelationField = <
|
export const useRelationField = <
|
||||||
T extends EntityForSelect | EntityForSelect[],
|
T extends EntityForSelect | EntityForSelect[],
|
||||||
>() => {
|
>() => {
|
||||||
const { entityId, fieldDefinition, maxWidth } = useContext(FieldContext);
|
const { recordId, fieldDefinition, maxWidth } = useContext(FieldContext);
|
||||||
const button = useGetButtonIcon();
|
const button = useGetButtonIcon();
|
||||||
|
|
||||||
assertFieldMetadata(
|
assertFieldMetadata(
|
||||||
@ -27,11 +27,11 @@ export const useRelationField = <
|
|||||||
const fieldName = fieldDefinition.metadata.fieldName;
|
const fieldName = fieldDefinition.metadata.fieldName;
|
||||||
|
|
||||||
const [fieldValue, setFieldValue] = useRecoilState<FieldRelationValue<T>>(
|
const [fieldValue, setFieldValue] = useRecoilState<FieldRelationValue<T>>(
|
||||||
recordStoreFamilySelector({ recordId: entityId, fieldName }),
|
recordStoreFamilySelector({ recordId, fieldName }),
|
||||||
);
|
);
|
||||||
|
|
||||||
const { getDraftValueSelector } = useRecordFieldInput<FieldRelationValue<T>>(
|
const { getDraftValueSelector } = useRecordFieldInput<FieldRelationValue<T>>(
|
||||||
`${entityId}-${fieldName}`,
|
`${recordId}-${fieldName}`,
|
||||||
);
|
);
|
||||||
const draftValue = useRecoilValue(getDraftValueSelector());
|
const draftValue = useRecoilValue(getDraftValueSelector());
|
||||||
|
|
||||||
@ -43,6 +43,6 @@ export const useRelationField = <
|
|||||||
initialSearchValue,
|
initialSearchValue,
|
||||||
setFieldValue,
|
setFieldValue,
|
||||||
maxWidth: button && maxWidth ? maxWidth - 28 : maxWidth,
|
maxWidth: button && maxWidth ? maxWidth - 28 : maxWidth,
|
||||||
entityId,
|
recordId,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@ -14,7 +14,7 @@ import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata';
|
|||||||
import { isFieldRelation } from '../../types/guards/isFieldRelation';
|
import { isFieldRelation } from '../../types/guards/isFieldRelation';
|
||||||
|
|
||||||
export const useRelationFromManyFieldDisplay = () => {
|
export const useRelationFromManyFieldDisplay = () => {
|
||||||
const { entityId, fieldDefinition, maxWidth } = useContext(FieldContext);
|
const { recordId, fieldDefinition, maxWidth } = useContext(FieldContext);
|
||||||
|
|
||||||
const { chipGeneratorPerObjectPerField } = useContext(
|
const { chipGeneratorPerObjectPerField } = useContext(
|
||||||
PreComputedChipGeneratorsContext,
|
PreComputedChipGeneratorsContext,
|
||||||
@ -35,7 +35,7 @@ export const useRelationFromManyFieldDisplay = () => {
|
|||||||
const fieldName = fieldDefinition.metadata.fieldName;
|
const fieldName = fieldDefinition.metadata.fieldName;
|
||||||
|
|
||||||
const fieldValue = useRecordFieldValue<ObjectRecord[] | undefined>(
|
const fieldValue = useRecordFieldValue<ObjectRecord[] | undefined>(
|
||||||
entityId,
|
recordId,
|
||||||
fieldName,
|
fieldName,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -57,7 +57,7 @@ export const useRelationFromManyFieldDisplay = () => {
|
|||||||
fieldDefinition,
|
fieldDefinition,
|
||||||
fieldValue,
|
fieldValue,
|
||||||
maxWidth: maxWidthForField,
|
maxWidth: maxWidthForField,
|
||||||
entityId,
|
recordId,
|
||||||
generateRecordChipData,
|
generateRecordChipData,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@ -14,7 +14,7 @@ import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata';
|
|||||||
import { isFieldRelation } from '../../types/guards/isFieldRelation';
|
import { isFieldRelation } from '../../types/guards/isFieldRelation';
|
||||||
|
|
||||||
export const useRelationToOneFieldDisplay = () => {
|
export const useRelationToOneFieldDisplay = () => {
|
||||||
const { entityId, fieldDefinition, maxWidth } = useContext(FieldContext);
|
const { recordId, fieldDefinition, maxWidth } = useContext(FieldContext);
|
||||||
|
|
||||||
const { chipGeneratorPerObjectPerField } = useContext(
|
const { chipGeneratorPerObjectPerField } = useContext(
|
||||||
PreComputedChipGeneratorsContext,
|
PreComputedChipGeneratorsContext,
|
||||||
@ -35,7 +35,7 @@ export const useRelationToOneFieldDisplay = () => {
|
|||||||
const fieldName = fieldDefinition.metadata.fieldName;
|
const fieldName = fieldDefinition.metadata.fieldName;
|
||||||
|
|
||||||
const fieldValue = useRecordFieldValue<ObjectRecord | undefined>(
|
const fieldValue = useRecordFieldValue<ObjectRecord | undefined>(
|
||||||
entityId,
|
recordId,
|
||||||
fieldName,
|
fieldName,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -57,7 +57,7 @@ export const useRelationToOneFieldDisplay = () => {
|
|||||||
fieldDefinition,
|
fieldDefinition,
|
||||||
fieldValue,
|
fieldValue,
|
||||||
maxWidth: maxWidthForField,
|
maxWidth: maxWidthForField,
|
||||||
entityId,
|
recordId,
|
||||||
generateRecordChipData,
|
generateRecordChipData,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@ -13,7 +13,7 @@ import { isFieldSelect } from '../../types/guards/isFieldSelect';
|
|||||||
import { isFieldSelectValue } from '../../types/guards/isFieldSelectValue';
|
import { isFieldSelectValue } from '../../types/guards/isFieldSelectValue';
|
||||||
|
|
||||||
export const useSelectField = () => {
|
export const useSelectField = () => {
|
||||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||||
|
|
||||||
assertFieldMetadata(FieldMetadataType.Select, isFieldSelect, fieldDefinition);
|
assertFieldMetadata(FieldMetadataType.Select, isFieldSelect, fieldDefinition);
|
||||||
|
|
||||||
@ -21,7 +21,7 @@ export const useSelectField = () => {
|
|||||||
|
|
||||||
const [fieldValue, setFieldValue] = useRecoilState<FieldSelectValue>(
|
const [fieldValue, setFieldValue] = useRecoilState<FieldSelectValue>(
|
||||||
recordStoreFamilySelector({
|
recordStoreFamilySelector({
|
||||||
recordId: entityId,
|
recordId,
|
||||||
fieldName: fieldName,
|
fieldName: fieldName,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
@ -30,7 +30,7 @@ export const useSelectField = () => {
|
|||||||
const persistField = usePersistField();
|
const persistField = usePersistField();
|
||||||
|
|
||||||
const { setDraftValue, getDraftValueSelector } =
|
const { setDraftValue, getDraftValueSelector } =
|
||||||
useRecordFieldInput<FieldSelectValue>(`${entityId}-${fieldName}`);
|
useRecordFieldInput<FieldSelectValue>(`${recordId}-${fieldName}`);
|
||||||
const draftValue = useRecoilValue(getDraftValueSelector());
|
const draftValue = useRecoilValue(getDraftValueSelector());
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@ -10,12 +10,12 @@ import {
|
|||||||
} from '../../types/FieldMetadata';
|
} from '../../types/FieldMetadata';
|
||||||
|
|
||||||
export const useSelectFieldDisplay = () => {
|
export const useSelectFieldDisplay = () => {
|
||||||
const { entityId, fieldDefinition } = useContext(FieldContext);
|
const { recordId, fieldDefinition } = useContext(FieldContext);
|
||||||
|
|
||||||
const { fieldName } = fieldDefinition.metadata;
|
const { fieldName } = fieldDefinition.metadata;
|
||||||
|
|
||||||
const fieldValue = useRecordFieldValue<FieldSelectValue | undefined>(
|
const fieldValue = useRecordFieldValue<FieldSelectValue | undefined>(
|
||||||
entityId,
|
recordId,
|
||||||
fieldName,
|
fieldName,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -12,7 +12,7 @@ import { isFieldText } from '../../types/guards/isFieldText';
|
|||||||
import { isFieldTextValue } from '../../types/guards/isFieldTextValue';
|
import { isFieldTextValue } from '../../types/guards/isFieldTextValue';
|
||||||
|
|
||||||
export const useTextField = () => {
|
export const useTextField = () => {
|
||||||
const { entityId, fieldDefinition, hotkeyScope, maxWidth } =
|
const { recordId, fieldDefinition, hotkeyScope, maxWidth } =
|
||||||
useContext(FieldContext);
|
useContext(FieldContext);
|
||||||
|
|
||||||
assertFieldMetadata(FieldMetadataType.Text, isFieldText, fieldDefinition);
|
assertFieldMetadata(FieldMetadataType.Text, isFieldText, fieldDefinition);
|
||||||
@ -21,14 +21,14 @@ export const useTextField = () => {
|
|||||||
|
|
||||||
const [fieldValue, setFieldValue] = useRecoilState<FieldTextValue>(
|
const [fieldValue, setFieldValue] = useRecoilState<FieldTextValue>(
|
||||||
recordStoreFamilySelector({
|
recordStoreFamilySelector({
|
||||||
recordId: entityId,
|
recordId,
|
||||||
fieldName: fieldName,
|
fieldName: fieldName,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
const fieldTextValue = isFieldTextValue(fieldValue) ? fieldValue : '';
|
const fieldTextValue = isFieldTextValue(fieldValue) ? fieldValue : '';
|
||||||
|
|
||||||
const { setDraftValue, getDraftValueSelector } =
|
const { setDraftValue, getDraftValueSelector } =
|
||||||
useRecordFieldInput<FieldTextValue>(`${entityId}-${fieldName}`);
|
useRecordFieldInput<FieldTextValue>(`${recordId}-${fieldName}`);
|
||||||
|
|
||||||
const draftValue = useRecoilValue(getDraftValueSelector());
|
const draftValue = useRecoilValue(getDraftValueSelector());
|
||||||
|
|
||||||
|
|||||||
@ -5,12 +5,12 @@ import { useRecordFieldValue } from '@/object-record/record-store/contexts/Recor
|
|||||||
import { FieldContext } from '../../contexts/FieldContext';
|
import { FieldContext } from '../../contexts/FieldContext';
|
||||||
|
|
||||||
export const useTextFieldDisplay = () => {
|
export const useTextFieldDisplay = () => {
|
||||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||||
|
|
||||||
const fieldName = fieldDefinition.metadata.fieldName;
|
const fieldName = fieldDefinition.metadata.fieldName;
|
||||||
|
|
||||||
const fieldValue =
|
const fieldValue =
|
||||||
useRecordFieldValue<string | undefined>(entityId, fieldName) ?? '';
|
useRecordFieldValue<string | undefined>(recordId, fieldName) ?? '';
|
||||||
|
|
||||||
return {
|
return {
|
||||||
fieldDefinition,
|
fieldDefinition,
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata';
|
|||||||
import { isFieldTextValue } from '../../types/guards/isFieldTextValue';
|
import { isFieldTextValue } from '../../types/guards/isFieldTextValue';
|
||||||
|
|
||||||
export const useUuidField = () => {
|
export const useUuidField = () => {
|
||||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
const { recordId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||||
|
|
||||||
assertFieldMetadata(FieldMetadataType.Uuid, isFieldUuid, fieldDefinition);
|
assertFieldMetadata(FieldMetadataType.Uuid, isFieldUuid, fieldDefinition);
|
||||||
|
|
||||||
@ -19,7 +19,7 @@ export const useUuidField = () => {
|
|||||||
|
|
||||||
const [fieldValue, setFieldValue] = useRecoilState<FieldUUidValue>(
|
const [fieldValue, setFieldValue] = useRecoilState<FieldUUidValue>(
|
||||||
recordStoreFamilySelector({
|
recordStoreFamilySelector({
|
||||||
recordId: entityId,
|
recordId,
|
||||||
fieldName: fieldName,
|
fieldName: fieldName,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|||||||
@ -36,7 +36,7 @@ export const RelationToOneFieldInput = ({
|
|||||||
<StyledRelationPickerContainer>
|
<StyledRelationPickerContainer>
|
||||||
<RelationPicker
|
<RelationPicker
|
||||||
fieldDefinition={fieldDefinition}
|
fieldDefinition={fieldDefinition}
|
||||||
recordId={fieldValue?.id}
|
selectedRecordId={fieldValue?.id}
|
||||||
onSubmit={handleSubmit}
|
onSubmit={handleSubmit}
|
||||||
onCancel={onCancel}
|
onCancel={onCancel}
|
||||||
initialSearchFilter={initialSearchValue}
|
initialSearchFilter={initialSearchValue}
|
||||||
|
|||||||
@ -29,11 +29,11 @@ const AddressValueSetterEffect = ({
|
|||||||
|
|
||||||
type AddressInputWithContextProps = AddressInputProps & {
|
type AddressInputWithContextProps = AddressInputProps & {
|
||||||
value: string;
|
value: string;
|
||||||
entityId?: string;
|
recordId?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
const AddressInputWithContext = ({
|
const AddressInputWithContext = ({
|
||||||
entityId,
|
recordId,
|
||||||
value,
|
value,
|
||||||
onEnter,
|
onEnter,
|
||||||
onEscape,
|
onEscape,
|
||||||
@ -61,7 +61,7 @@ const AddressInputWithContext = ({
|
|||||||
objectMetadataNameSingular: 'person',
|
objectMetadataNameSingular: 'person',
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
entityId={entityId}
|
recordId={recordId}
|
||||||
>
|
>
|
||||||
<AddressValueSetterEffect value={value} />
|
<AddressValueSetterEffect value={value} />
|
||||||
<AddressInput
|
<AddressInput
|
||||||
|
|||||||
@ -14,28 +14,28 @@ import {
|
|||||||
|
|
||||||
const BooleanFieldValueSetterEffect = ({
|
const BooleanFieldValueSetterEffect = ({
|
||||||
value,
|
value,
|
||||||
entityId,
|
recordId,
|
||||||
}: {
|
}: {
|
||||||
value: boolean;
|
value: boolean;
|
||||||
entityId: string;
|
recordId: string;
|
||||||
}) => {
|
}) => {
|
||||||
const setField = useSetRecoilState(recordStoreFamilyState(entityId));
|
const setField = useSetRecoilState(recordStoreFamilyState(recordId));
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setField({ id: entityId, Boolean: value, __typename: 'Person' });
|
setField({ id: recordId, Boolean: value, __typename: 'Person' });
|
||||||
}, [entityId, setField, value]);
|
}, [recordId, setField, value]);
|
||||||
|
|
||||||
return <></>;
|
return <></>;
|
||||||
};
|
};
|
||||||
|
|
||||||
type BooleanFieldInputWithContextProps = BooleanFieldInputProps & {
|
type BooleanFieldInputWithContextProps = BooleanFieldInputProps & {
|
||||||
value: boolean;
|
value: boolean;
|
||||||
entityId?: string;
|
recordId?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
const BooleanFieldInputWithContext = ({
|
const BooleanFieldInputWithContext = ({
|
||||||
value,
|
value,
|
||||||
entityId,
|
recordId,
|
||||||
onSubmit,
|
onSubmit,
|
||||||
}: BooleanFieldInputWithContextProps) => {
|
}: BooleanFieldInputWithContextProps) => {
|
||||||
return (
|
return (
|
||||||
@ -51,9 +51,9 @@ const BooleanFieldInputWithContext = ({
|
|||||||
objectMetadataNameSingular: 'person',
|
objectMetadataNameSingular: 'person',
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
entityId={entityId}
|
recordId={recordId}
|
||||||
>
|
>
|
||||||
<BooleanFieldValueSetterEffect value={value} entityId={entityId ?? ''} />
|
<BooleanFieldValueSetterEffect value={value} recordId={recordId ?? ''} />
|
||||||
<BooleanFieldInput onSubmit={onSubmit} testId="boolean-field-input" />
|
<BooleanFieldInput onSubmit={onSubmit} testId="boolean-field-input" />
|
||||||
</FieldContextProvider>
|
</FieldContextProvider>
|
||||||
);
|
);
|
||||||
@ -64,7 +64,7 @@ const meta: Meta = {
|
|||||||
component: BooleanFieldInputWithContext,
|
component: BooleanFieldInputWithContext,
|
||||||
args: {
|
args: {
|
||||||
value: true,
|
value: true,
|
||||||
entityId: 'id-1',
|
recordId: 'id-1',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -49,12 +49,12 @@ const DateFieldValueGater = ({
|
|||||||
|
|
||||||
type DateFieldInputWithContextProps = DateTimeFieldInputProps & {
|
type DateFieldInputWithContextProps = DateTimeFieldInputProps & {
|
||||||
value: Date;
|
value: Date;
|
||||||
entityId?: string;
|
recordId?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
const DateFieldInputWithContext = ({
|
const DateFieldInputWithContext = ({
|
||||||
value,
|
value,
|
||||||
entityId,
|
recordId,
|
||||||
onEscape,
|
onEscape,
|
||||||
onEnter,
|
onEnter,
|
||||||
onClickOutside,
|
onClickOutside,
|
||||||
@ -79,7 +79,7 @@ const DateFieldInputWithContext = ({
|
|||||||
objectMetadataNameSingular: 'person',
|
objectMetadataNameSingular: 'person',
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
entityId={entityId}
|
recordId={recordId}
|
||||||
>
|
>
|
||||||
<DateFieldValueSetterEffect value={value} />
|
<DateFieldValueSetterEffect value={value} />
|
||||||
<DateFieldValueGater
|
<DateFieldValueGater
|
||||||
|
|||||||
@ -22,11 +22,11 @@ const EmailFieldValueSetterEffect = ({ value }: { value: string }) => {
|
|||||||
|
|
||||||
type EmailFieldInputWithContextProps = EmailFieldInputProps & {
|
type EmailFieldInputWithContextProps = EmailFieldInputProps & {
|
||||||
value: string;
|
value: string;
|
||||||
entityId?: string;
|
recordId?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
const EmailFieldInputWithContext = ({
|
const EmailFieldInputWithContext = ({
|
||||||
entityId,
|
recordId,
|
||||||
value,
|
value,
|
||||||
onEnter,
|
onEnter,
|
||||||
onEscape,
|
onEscape,
|
||||||
@ -54,7 +54,7 @@ const EmailFieldInputWithContext = ({
|
|||||||
objectMetadataNameSingular: 'person',
|
objectMetadataNameSingular: 'person',
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
entityId={entityId}
|
recordId={recordId}
|
||||||
>
|
>
|
||||||
<EmailFieldValueSetterEffect value={value} />
|
<EmailFieldValueSetterEffect value={value} />
|
||||||
<EmailFieldInput
|
<EmailFieldInput
|
||||||
|
|||||||
@ -22,11 +22,11 @@ const NumberFieldValueSetterEffect = ({ value }: { value: number }) => {
|
|||||||
|
|
||||||
type NumberFieldInputWithContextProps = NumberFieldInputProps & {
|
type NumberFieldInputWithContextProps = NumberFieldInputProps & {
|
||||||
value: number;
|
value: number;
|
||||||
entityId?: string;
|
recordId?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
const NumberFieldInputWithContext = ({
|
const NumberFieldInputWithContext = ({
|
||||||
entityId,
|
recordId,
|
||||||
value,
|
value,
|
||||||
onEnter,
|
onEnter,
|
||||||
onEscape,
|
onEscape,
|
||||||
@ -54,7 +54,7 @@ const NumberFieldInputWithContext = ({
|
|||||||
objectMetadataNameSingular: 'person',
|
objectMetadataNameSingular: 'person',
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
entityId={entityId}
|
recordId={recordId}
|
||||||
>
|
>
|
||||||
<NumberFieldValueSetterEffect value={value} />
|
<NumberFieldValueSetterEffect value={value} />
|
||||||
<NumberFieldInput
|
<NumberFieldInput
|
||||||
|
|||||||
@ -22,11 +22,11 @@ const PhoneFieldValueSetterEffect = ({ value }: { value: string }) => {
|
|||||||
|
|
||||||
type PhoneFieldInputWithContextProps = PhoneFieldInputProps & {
|
type PhoneFieldInputWithContextProps = PhoneFieldInputProps & {
|
||||||
value: string;
|
value: string;
|
||||||
entityId?: string;
|
recordId?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
const PhoneFieldInputWithContext = ({
|
const PhoneFieldInputWithContext = ({
|
||||||
entityId,
|
recordId,
|
||||||
value,
|
value,
|
||||||
onEnter,
|
onEnter,
|
||||||
onEscape,
|
onEscape,
|
||||||
@ -54,7 +54,7 @@ const PhoneFieldInputWithContext = ({
|
|||||||
objectMetadataNameSingular: 'person',
|
objectMetadataNameSingular: 'person',
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
entityId={entityId}
|
recordId={recordId}
|
||||||
>
|
>
|
||||||
<PhoneFieldValueSetterEffect value={value} />
|
<PhoneFieldValueSetterEffect value={value} />
|
||||||
<PhoneFieldInput
|
<PhoneFieldInput
|
||||||
|
|||||||
@ -27,11 +27,11 @@ const RatingFieldValueSetterEffect = ({
|
|||||||
|
|
||||||
type RatingFieldInputWithContextProps = RatingFieldInputProps & {
|
type RatingFieldInputWithContextProps = RatingFieldInputProps & {
|
||||||
value: FieldRatingValue;
|
value: FieldRatingValue;
|
||||||
entityId?: string;
|
recordId?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
const RatingFieldInputWithContext = ({
|
const RatingFieldInputWithContext = ({
|
||||||
entityId,
|
recordId,
|
||||||
value,
|
value,
|
||||||
onSubmit,
|
onSubmit,
|
||||||
}: RatingFieldInputWithContextProps) => {
|
}: RatingFieldInputWithContextProps) => {
|
||||||
@ -53,7 +53,7 @@ const RatingFieldInputWithContext = ({
|
|||||||
objectMetadataNameSingular: 'person',
|
objectMetadataNameSingular: 'person',
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
entityId={entityId}
|
recordId={recordId}
|
||||||
>
|
>
|
||||||
<RatingFieldValueSetterEffect value={value} />
|
<RatingFieldValueSetterEffect value={value} />
|
||||||
<RatingFieldInput onSubmit={onSubmit} />
|
<RatingFieldInput onSubmit={onSubmit} />
|
||||||
|
|||||||
@ -56,7 +56,7 @@ const RelationManyFieldInputWithContext = () => {
|
|||||||
relationFieldMetadataId: '20202020-8c37-4163-ba06-1dada334ce3e',
|
relationFieldMetadataId: '20202020-8c37-4163-ba06-1dada334ce3e',
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
entityId={'entityId'}
|
recordId={'recordId'}
|
||||||
>
|
>
|
||||||
<RelationWorkspaceSetterEffect />
|
<RelationWorkspaceSetterEffect />
|
||||||
<RelationFromManyFieldInput />
|
<RelationFromManyFieldInput />
|
||||||
|
|||||||
@ -47,11 +47,11 @@ const RelationWorkspaceSetterEffect = () => {
|
|||||||
|
|
||||||
type RelationToOneFieldInputWithContextProps = RelationToOneFieldInputProps & {
|
type RelationToOneFieldInputWithContextProps = RelationToOneFieldInputProps & {
|
||||||
value: number;
|
value: number;
|
||||||
entityId?: string;
|
recordId?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
const RelationToOneFieldInputWithContext = ({
|
const RelationToOneFieldInputWithContext = ({
|
||||||
entityId,
|
recordId,
|
||||||
onSubmit,
|
onSubmit,
|
||||||
onCancel,
|
onCancel,
|
||||||
}: RelationToOneFieldInputWithContextProps) => {
|
}: RelationToOneFieldInputWithContextProps) => {
|
||||||
@ -78,7 +78,7 @@ const RelationToOneFieldInputWithContext = ({
|
|||||||
relationFieldMetadataId: '20202020-8c37-4163-ba06-1dada334ce3e',
|
relationFieldMetadataId: '20202020-8c37-4163-ba06-1dada334ce3e',
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
entityId={entityId}
|
recordId={recordId}
|
||||||
>
|
>
|
||||||
<RelationPickerScope
|
<RelationPickerScope
|
||||||
relationPickerScopeId={'relation-to-one-field-input'}
|
relationPickerScopeId={'relation-to-one-field-input'}
|
||||||
|
|||||||
@ -22,11 +22,11 @@ const TextFieldValueSetterEffect = ({ value }: { value: string }) => {
|
|||||||
|
|
||||||
type TextFieldInputWithContextProps = TextFieldInputProps & {
|
type TextFieldInputWithContextProps = TextFieldInputProps & {
|
||||||
value: string;
|
value: string;
|
||||||
entityId?: string;
|
recordId?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
const TextFieldInputWithContext = ({
|
const TextFieldInputWithContext = ({
|
||||||
entityId,
|
recordId,
|
||||||
value,
|
value,
|
||||||
onEnter,
|
onEnter,
|
||||||
onEscape,
|
onEscape,
|
||||||
@ -54,7 +54,7 @@ const TextFieldInputWithContext = ({
|
|||||||
objectMetadataNameSingular: 'person',
|
objectMetadataNameSingular: 'person',
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
entityId={entityId}
|
recordId={recordId}
|
||||||
>
|
>
|
||||||
<TextFieldValueSetterEffect value={value} />
|
<TextFieldValueSetterEffect value={value} />
|
||||||
<TextFieldInput
|
<TextFieldInput
|
||||||
|
|||||||
@ -14,7 +14,7 @@ export const useUpdateRelationFromManyFieldInput = ({
|
|||||||
}: {
|
}: {
|
||||||
scopeId: string;
|
scopeId: string;
|
||||||
}) => {
|
}) => {
|
||||||
const { entityId, fieldDefinition } = useContext(FieldContext);
|
const { recordId, fieldDefinition } = useContext(FieldContext);
|
||||||
|
|
||||||
assertFieldMetadata(
|
assertFieldMetadata(
|
||||||
FieldMetadataType.Relation,
|
FieldMetadataType.Relation,
|
||||||
@ -71,18 +71,18 @@ export const useUpdateRelationFromManyFieldInput = ({
|
|||||||
|
|
||||||
if (isNewlySelected) {
|
if (isNewlySelected) {
|
||||||
await updateOneRecordAndAttachRelations({
|
await updateOneRecordAndAttachRelations({
|
||||||
recordId: entityId,
|
recordId,
|
||||||
relatedRecordId: objectRecordId,
|
relatedRecordId: objectRecordId,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
await updateOneRecordAndDetachRelations({
|
await updateOneRecordAndDetachRelations({
|
||||||
recordId: entityId,
|
recordId,
|
||||||
relatedRecordId: objectRecordId,
|
relatedRecordId: objectRecordId,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[
|
[
|
||||||
entityId,
|
recordId,
|
||||||
scopeId,
|
scopeId,
|
||||||
updateOneRecordAndAttachRelations,
|
updateOneRecordAndAttachRelations,
|
||||||
updateOneRecordAndDetachRelations,
|
updateOneRecordAndDetachRelations,
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import { useInlineCell } from '../hooks/useInlineCell';
|
|||||||
|
|
||||||
import { useIsFieldReadOnly } from '@/object-record/record-field/hooks/useIsFieldReadOnly';
|
import { useIsFieldReadOnly } from '@/object-record/record-field/hooks/useIsFieldReadOnly';
|
||||||
import { RecordInlineCellContainer } from './RecordInlineCellContainer';
|
import { RecordInlineCellContainer } from './RecordInlineCellContainer';
|
||||||
|
import { getRecordFieldInputId } from '@/object-record/utils/getRecordFieldInputId';
|
||||||
|
|
||||||
type RecordInlineCellProps = {
|
type RecordInlineCellProps = {
|
||||||
readonly?: boolean;
|
readonly?: boolean;
|
||||||
@ -28,7 +29,7 @@ export const RecordInlineCell = ({
|
|||||||
loading,
|
loading,
|
||||||
isCentered,
|
isCentered,
|
||||||
}: RecordInlineCellProps) => {
|
}: RecordInlineCellProps) => {
|
||||||
const { fieldDefinition, entityId } = useContext(FieldContext);
|
const { fieldDefinition, recordId } = useContext(FieldContext);
|
||||||
const buttonIcon = useGetButtonIcon();
|
const buttonIcon = useGetButtonIcon();
|
||||||
|
|
||||||
const isFieldInputOnly = useIsFieldInputOnly();
|
const isFieldInputOnly = useIsFieldInputOnly();
|
||||||
@ -97,7 +98,7 @@ export const RecordInlineCell = ({
|
|||||||
isCentered={isCentered}
|
isCentered={isCentered}
|
||||||
editModeContent={
|
editModeContent={
|
||||||
<FieldInput
|
<FieldInput
|
||||||
recordFieldInputdId={`${entityId}-${fieldDefinition?.metadata?.fieldName}`}
|
recordFieldInputdId={getRecordFieldInputId(recordId, fieldDefinition?.metadata?.fieldName)}
|
||||||
onEnter={handleEnter}
|
onEnter={handleEnter}
|
||||||
onCancel={handleCancel}
|
onCancel={handleCancel}
|
||||||
onEscape={handleEscape}
|
onEscape={handleEscape}
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import { useFieldFocus } from '@/object-record/record-field/hooks/useFieldFocus'
|
|||||||
import { RecordInlineCellValue } from '@/object-record/record-inline-cell/components/RecordInlineCellValue';
|
import { RecordInlineCellValue } from '@/object-record/record-inline-cell/components/RecordInlineCellValue';
|
||||||
import { EllipsisDisplay } from '@/ui/field/display/components/EllipsisDisplay';
|
import { EllipsisDisplay } from '@/ui/field/display/components/EllipsisDisplay';
|
||||||
import { HotkeyScope } from '@/ui/utilities/hotkey/types/HotkeyScope';
|
import { HotkeyScope } from '@/ui/utilities/hotkey/types/HotkeyScope';
|
||||||
|
import { getRecordFieldInputId } from '@/object-record/utils/getRecordFieldInputId';
|
||||||
|
|
||||||
const StyledIconContainer = styled.div`
|
const StyledIconContainer = styled.div`
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@ -94,7 +95,7 @@ export const RecordInlineCellContainer = ({
|
|||||||
loading = false,
|
loading = false,
|
||||||
isCentered,
|
isCentered,
|
||||||
}: RecordInlineCellContainerProps) => {
|
}: RecordInlineCellContainerProps) => {
|
||||||
const { entityId, fieldDefinition } = useContext(FieldContext);
|
const { recordId, fieldDefinition } = useContext(FieldContext);
|
||||||
|
|
||||||
const { setIsFocused } = useFieldFocus();
|
const { setIsFocused } = useFieldFocus();
|
||||||
|
|
||||||
@ -111,7 +112,7 @@ export const RecordInlineCellContainer = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
const labelId = `label-${entityId}-${fieldDefinition?.metadata?.fieldName}`;
|
const labelId = `label-${getRecordFieldInputId(recordId,fieldDefinition?.metadata?.fieldName)}`;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<StyledInlineCellBaseContainer
|
<StyledInlineCellBaseContainer
|
||||||
|
|||||||
@ -13,7 +13,7 @@ import { InlineCellHotkeyScope } from '../types/InlineCellHotkeyScope';
|
|||||||
export const useInlineCell = () => {
|
export const useInlineCell = () => {
|
||||||
const {
|
const {
|
||||||
recoilScopeId = '',
|
recoilScopeId = '',
|
||||||
entityId,
|
recordId,
|
||||||
fieldDefinition,
|
fieldDefinition,
|
||||||
} = useContext(FieldContext);
|
} = useContext(FieldContext);
|
||||||
|
|
||||||
@ -36,7 +36,7 @@ export const useInlineCell = () => {
|
|||||||
|
|
||||||
const openInlineCell = (customEditHotkeyScopeForField?: HotkeyScope) => {
|
const openInlineCell = (customEditHotkeyScopeForField?: HotkeyScope) => {
|
||||||
setIsInlineCellInEditMode(true);
|
setIsInlineCellInEditMode(true);
|
||||||
initFieldInputDraftValue({ entityId, fieldDefinition });
|
initFieldInputDraftValue({ recordId, fieldDefinition });
|
||||||
|
|
||||||
if (isDefined(customEditHotkeyScopeForField)) {
|
if (isDefined(customEditHotkeyScopeForField)) {
|
||||||
setHotkeyScopeAndMemorizePreviousScope(
|
setHotkeyScopeAndMemorizePreviousScope(
|
||||||
|
|||||||
@ -163,7 +163,7 @@ export const RecordShowContainer = ({
|
|||||||
title={
|
title={
|
||||||
<FieldContext.Provider
|
<FieldContext.Provider
|
||||||
value={{
|
value={{
|
||||||
entityId: objectRecordId,
|
recordId: objectRecordId,
|
||||||
recoilScopeId:
|
recoilScopeId:
|
||||||
objectRecordId + labelIdentifierFieldMetadataItem?.id,
|
objectRecordId + labelIdentifierFieldMetadataItem?.id,
|
||||||
isLabelIdentifier: false,
|
isLabelIdentifier: false,
|
||||||
@ -211,7 +211,7 @@ export const RecordShowContainer = ({
|
|||||||
<FieldContext.Provider
|
<FieldContext.Provider
|
||||||
key={objectRecordId + fieldMetadataItem.id}
|
key={objectRecordId + fieldMetadataItem.id}
|
||||||
value={{
|
value={{
|
||||||
entityId: objectRecordId,
|
recordId: objectRecordId,
|
||||||
maxWidth: 200,
|
maxWidth: 200,
|
||||||
recoilScopeId: objectRecordId + fieldMetadataItem.id,
|
recoilScopeId: objectRecordId + fieldMetadataItem.id,
|
||||||
isLabelIdentifier: false,
|
isLabelIdentifier: false,
|
||||||
@ -244,7 +244,7 @@ export const RecordShowContainer = ({
|
|||||||
<FieldContext.Provider
|
<FieldContext.Provider
|
||||||
key={objectRecordId + fieldMetadataItem.id}
|
key={objectRecordId + fieldMetadataItem.id}
|
||||||
value={{
|
value={{
|
||||||
entityId: objectRecordId,
|
recordId: objectRecordId,
|
||||||
maxWidth: 200,
|
maxWidth: 200,
|
||||||
recoilScopeId: objectRecordId + fieldMetadataItem.id,
|
recoilScopeId: objectRecordId + fieldMetadataItem.id,
|
||||||
isLabelIdentifier: false,
|
isLabelIdentifier: false,
|
||||||
@ -277,7 +277,7 @@ export const RecordShowContainer = ({
|
|||||||
<FieldContext.Provider
|
<FieldContext.Provider
|
||||||
key={objectRecordId + fieldMetadataItem.id}
|
key={objectRecordId + fieldMetadataItem.id}
|
||||||
value={{
|
value={{
|
||||||
entityId: objectRecordId,
|
recordId: objectRecordId,
|
||||||
recoilScopeId: objectRecordId + fieldMetadataItem.id,
|
recoilScopeId: objectRecordId + fieldMetadataItem.id,
|
||||||
isLabelIdentifier: false,
|
isLabelIdentifier: false,
|
||||||
fieldDefinition: formatFieldMetadataItemAsColumnDefinition({
|
fieldDefinition: formatFieldMetadataItemAsColumnDefinition({
|
||||||
|
|||||||
@ -230,7 +230,7 @@ export const RecordDetailRelationRecordsListItem = ({
|
|||||||
<FieldContext.Provider
|
<FieldContext.Provider
|
||||||
key={fieldMetadataItem.id}
|
key={fieldMetadataItem.id}
|
||||||
value={{
|
value={{
|
||||||
entityId: relationRecord.id,
|
recordId: relationRecord.id,
|
||||||
maxWidth: 200,
|
maxWidth: 200,
|
||||||
recoilScopeId: `${relationRecord.id}-${fieldMetadataItem.id}`,
|
recoilScopeId: `${relationRecord.id}-${fieldMetadataItem.id}`,
|
||||||
isLabelIdentifier: false,
|
isLabelIdentifier: false,
|
||||||
|
|||||||
@ -40,14 +40,14 @@ const StyledAddDropdown = styled(Dropdown)`
|
|||||||
export const RecordDetailRelationSection = ({
|
export const RecordDetailRelationSection = ({
|
||||||
loading,
|
loading,
|
||||||
}: RecordDetailRelationSectionProps) => {
|
}: RecordDetailRelationSectionProps) => {
|
||||||
const { entityId, fieldDefinition } = useContext(FieldContext);
|
const { recordId, fieldDefinition } = useContext(FieldContext);
|
||||||
const {
|
const {
|
||||||
fieldName,
|
fieldName,
|
||||||
relationFieldMetadataId,
|
relationFieldMetadataId,
|
||||||
relationObjectMetadataNameSingular,
|
relationObjectMetadataNameSingular,
|
||||||
relationType,
|
relationType,
|
||||||
} = fieldDefinition.metadata as FieldRelationMetadata;
|
} = fieldDefinition.metadata as FieldRelationMetadata;
|
||||||
const record = useRecoilValue(recordStoreFamilyState(entityId));
|
const record = useRecoilValue(recordStoreFamilyState(recordId));
|
||||||
|
|
||||||
const { objectMetadataItem: relationObjectMetadataItem } =
|
const { objectMetadataItem: relationObjectMetadataItem } =
|
||||||
useObjectMetadataItem({
|
useObjectMetadataItem({
|
||||||
@ -60,7 +60,7 @@ export const RecordDetailRelationSection = ({
|
|||||||
|
|
||||||
const fieldValue = useRecoilValue<
|
const fieldValue = useRecoilValue<
|
||||||
({ id: string } & Record<string, any>) | ObjectRecord[] | null
|
({ id: string } & Record<string, any>) | ObjectRecord[] | null
|
||||||
>(recordStoreFamilySelector({ recordId: entityId, fieldName }));
|
>(recordStoreFamilySelector({ recordId, fieldName }));
|
||||||
|
|
||||||
// TODO: use new relation type
|
// TODO: use new relation type
|
||||||
const isToOneObject = relationType === 'TO_ONE_OBJECT';
|
const isToOneObject = relationType === 'TO_ONE_OBJECT';
|
||||||
@ -73,7 +73,7 @@ export const RecordDetailRelationSection = ({
|
|||||||
|
|
||||||
const relationRecordIds = relationRecords.map(({ id }) => id);
|
const relationRecordIds = relationRecords.map(({ id }) => id);
|
||||||
|
|
||||||
const dropdownId = `record-field-card-relation-picker-${fieldDefinition.label}-${entityId}`;
|
const dropdownId = `record-field-card-relation-picker-${fieldDefinition.label}-${recordId}`;
|
||||||
|
|
||||||
const { closeDropdown, isDropdownOpen } = useDropdown(dropdownId);
|
const { closeDropdown, isDropdownOpen } = useDropdown(dropdownId);
|
||||||
|
|
||||||
@ -113,7 +113,7 @@ export const RecordDetailRelationSection = ({
|
|||||||
const filterQueryParams: FilterQueryParams = {
|
const filterQueryParams: FilterQueryParams = {
|
||||||
filter: {
|
filter: {
|
||||||
[relationFieldMetadataItem?.name || '']: {
|
[relationFieldMetadataItem?.name || '']: {
|
||||||
[ViewFilterOperand.Is]: [entityId],
|
[ViewFilterOperand.Is]: [recordId],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@ -144,7 +144,7 @@ export const RecordDetailRelationSection = ({
|
|||||||
relationObjectMetadataNameSingular,
|
relationObjectMetadataNameSingular,
|
||||||
relationObjectMetadataItem,
|
relationObjectMetadataItem,
|
||||||
relationFieldMetadataItem,
|
relationFieldMetadataItem,
|
||||||
entityId,
|
recordId,
|
||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@ -26,7 +26,7 @@ const meta: Meta<typeof RecordDetailRelationSection> = {
|
|||||||
(Story) => (
|
(Story) => (
|
||||||
<FieldContext.Provider
|
<FieldContext.Provider
|
||||||
value={{
|
value={{
|
||||||
entityId: companiesMock[0].id,
|
recordId: companiesMock[0].id,
|
||||||
basePathToShowPage: '/object-record/',
|
basePathToShowPage: '/object-record/',
|
||||||
isLabelIdentifier: false,
|
isLabelIdentifier: false,
|
||||||
fieldDefinition: formatFieldMetadataItemAsFieldDefinition({
|
fieldDefinition: formatFieldMetadataItemAsFieldDefinition({
|
||||||
|
|||||||
@ -40,14 +40,14 @@ export const RecordTableContextProvider = ({
|
|||||||
|
|
||||||
const handleUpsertRecord = ({
|
const handleUpsertRecord = ({
|
||||||
persistField,
|
persistField,
|
||||||
entityId,
|
recordId,
|
||||||
fieldName,
|
fieldName,
|
||||||
}: {
|
}: {
|
||||||
persistField: () => void;
|
persistField: () => void;
|
||||||
entityId: string;
|
recordId: string;
|
||||||
fieldName: string;
|
fieldName: string;
|
||||||
}) => {
|
}) => {
|
||||||
upsertRecord(persistField, entityId, fieldName, recordTableId);
|
upsertRecord(persistField, recordId, fieldName, recordTableId);
|
||||||
};
|
};
|
||||||
|
|
||||||
const { openTableCell } = useOpenRecordTableCellV2(recordTableId);
|
const { openTableCell } = useOpenRecordTableCellV2(recordTableId);
|
||||||
|
|||||||
@ -27,11 +27,11 @@ const objectMetadataItems = getObjectMetadataItemsMock();
|
|||||||
|
|
||||||
const RelationFieldValueSetterEffect = () => {
|
const RelationFieldValueSetterEffect = () => {
|
||||||
const setEntity = useSetRecoilState(
|
const setEntity = useSetRecoilState(
|
||||||
recordStoreFamilyState(mockPerformance.entityId),
|
recordStoreFamilyState(mockPerformance.recordId),
|
||||||
);
|
);
|
||||||
|
|
||||||
const setRelationEntity = useSetRecoilState(
|
const setRelationEntity = useSetRecoilState(
|
||||||
recordStoreFamilyState(mockPerformance.relationEntityId),
|
recordStoreFamilyState(mockPerformance.relationRecordId),
|
||||||
);
|
);
|
||||||
|
|
||||||
const setRecordValue = useSetRecordValue();
|
const setRecordValue = useSetRecordValue();
|
||||||
@ -64,7 +64,7 @@ const meta: Meta = {
|
|||||||
<RecordFieldValueSelectorContextProvider>
|
<RecordFieldValueSelectorContextProvider>
|
||||||
<RecordTableContext.Provider
|
<RecordTableContext.Provider
|
||||||
value={{
|
value={{
|
||||||
viewBarId: mockPerformance.entityId,
|
viewBarId: mockPerformance.recordId,
|
||||||
objectMetadataItem: mockPerformance.objectMetadataItem as any,
|
objectMetadataItem: mockPerformance.objectMetadataItem as any,
|
||||||
onUpsertRecord: () => {},
|
onUpsertRecord: () => {},
|
||||||
onOpenTableCell: () => {},
|
onOpenTableCell: () => {},
|
||||||
@ -87,13 +87,13 @@ const meta: Meta = {
|
|||||||
value={{
|
value={{
|
||||||
objectNameSingular:
|
objectNameSingular:
|
||||||
mockPerformance.entityValue.__typename.toLocaleLowerCase(),
|
mockPerformance.entityValue.__typename.toLocaleLowerCase(),
|
||||||
recordId: mockPerformance.entityId,
|
recordId: mockPerformance.recordId,
|
||||||
rowIndex: 0,
|
rowIndex: 0,
|
||||||
pathToShowPage:
|
pathToShowPage:
|
||||||
getBasePathToShowPage({
|
getBasePathToShowPage({
|
||||||
objectNameSingular:
|
objectNameSingular:
|
||||||
mockPerformance.entityValue.__typename.toLocaleLowerCase(),
|
mockPerformance.entityValue.__typename.toLocaleLowerCase(),
|
||||||
}) + mockPerformance.entityId,
|
}) + mockPerformance.recordId,
|
||||||
isSelected: false,
|
isSelected: false,
|
||||||
isReadOnly: false,
|
isReadOnly: false,
|
||||||
isDragging: false,
|
isDragging: false,
|
||||||
@ -113,7 +113,7 @@ const meta: Meta = {
|
|||||||
>
|
>
|
||||||
<FieldContext.Provider
|
<FieldContext.Provider
|
||||||
value={{
|
value={{
|
||||||
entityId: mockPerformance.entityId,
|
recordId: mockPerformance.recordId,
|
||||||
basePathToShowPage: '/object-record/',
|
basePathToShowPage: '/object-record/',
|
||||||
isLabelIdentifier: false,
|
isLabelIdentifier: false,
|
||||||
fieldDefinition: {
|
fieldDefinition: {
|
||||||
|
|||||||
@ -771,8 +771,8 @@ export const mockPerformance = {
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
entityId: '20202020-2d40-4e49-8df4-9c6a049191df',
|
recordId: '20202020-2d40-4e49-8df4-9c6a049191df',
|
||||||
relationEntityId: '20202020-c21e-4ec2-873b-de4264d89025',
|
relationRecordId: '20202020-c21e-4ec2-873b-de4264d89025',
|
||||||
entityValue: {
|
entityValue: {
|
||||||
__typename: 'Person',
|
__typename: 'Person',
|
||||||
asd: '',
|
asd: '',
|
||||||
|
|||||||
@ -13,11 +13,11 @@ export type RecordTableContextProps = {
|
|||||||
objectMetadataItem: ObjectMetadataItem;
|
objectMetadataItem: ObjectMetadataItem;
|
||||||
onUpsertRecord: ({
|
onUpsertRecord: ({
|
||||||
persistField,
|
persistField,
|
||||||
entityId,
|
recordId,
|
||||||
fieldName,
|
fieldName,
|
||||||
}: {
|
}: {
|
||||||
persistField: () => void;
|
persistField: () => void;
|
||||||
entityId: string;
|
recordId: string;
|
||||||
fieldName: string;
|
fieldName: string;
|
||||||
}) => void;
|
}) => void;
|
||||||
onOpenTableCell: (args: OpenTableCellArgs) => void;
|
onOpenTableCell: (args: OpenTableCellArgs) => void;
|
||||||
|
|||||||
@ -43,14 +43,14 @@ export const useSetRecordTableData = ({
|
|||||||
hasUserSelectedAllRowsState,
|
hasUserSelectedAllRowsState,
|
||||||
);
|
);
|
||||||
|
|
||||||
const entityIds = newRecords.map((entity) => entity.id);
|
const recordIds = newRecords.map((record) => record.id);
|
||||||
|
|
||||||
if (!isDeeplyEqual(currentRowIds, entityIds)) {
|
if (!isDeeplyEqual(currentRowIds, recordIds)) {
|
||||||
set(tableRowIdsState, entityIds);
|
set(tableRowIdsState, recordIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasUserSelectedAllRows) {
|
if (hasUserSelectedAllRows) {
|
||||||
for (const rowId of entityIds) {
|
for (const rowId of recordIds) {
|
||||||
set(isRowSelectedFamilyState(rowId), true);
|
set(isRowSelectedFamilyState(rowId), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -38,7 +38,7 @@ export const RecordTableCellFieldContextWrapper = ({
|
|||||||
<FieldContext.Provider
|
<FieldContext.Provider
|
||||||
value={{
|
value={{
|
||||||
recoilScopeId: recordId + columnDefinition.label,
|
recoilScopeId: recordId + columnDefinition.label,
|
||||||
entityId: recordId,
|
recordId,
|
||||||
fieldDefinition: columnDefinition,
|
fieldDefinition: columnDefinition,
|
||||||
useUpdateRecord: () => [updateRecord, {}],
|
useUpdateRecord: () => [updateRecord, {}],
|
||||||
hotkeyScope: customHotkeyScope,
|
hotkeyScope: customHotkeyScope,
|
||||||
|
|||||||
@ -5,17 +5,19 @@ import { FieldContext } from '@/object-record/record-field/contexts/FieldContext
|
|||||||
import { useIsFieldReadOnly } from '@/object-record/record-field/hooks/useIsFieldReadOnly';
|
import { useIsFieldReadOnly } from '@/object-record/record-field/hooks/useIsFieldReadOnly';
|
||||||
import { FieldInputEvent } from '@/object-record/record-field/types/FieldInputEvent';
|
import { FieldInputEvent } from '@/object-record/record-field/types/FieldInputEvent';
|
||||||
import { RecordTableContext } from '@/object-record/record-table/contexts/RecordTableContext';
|
import { RecordTableContext } from '@/object-record/record-table/contexts/RecordTableContext';
|
||||||
|
import { getRecordFieldInputId } from '@/object-record/utils/getRecordFieldInputId';
|
||||||
|
|
||||||
export const RecordTableCellFieldInput = () => {
|
export const RecordTableCellFieldInput = () => {
|
||||||
const { onUpsertRecord, onMoveFocus, onCloseTableCell } =
|
const { onUpsertRecord, onMoveFocus, onCloseTableCell } =
|
||||||
useContext(RecordTableContext);
|
useContext(RecordTableContext);
|
||||||
const { entityId, fieldDefinition } = useContext(FieldContext);
|
|
||||||
|
const { recordId, fieldDefinition } = useContext(FieldContext);
|
||||||
const isFieldReadOnly = useIsFieldReadOnly();
|
const isFieldReadOnly = useIsFieldReadOnly();
|
||||||
|
|
||||||
const handleEnter: FieldInputEvent = (persistField) => {
|
const handleEnter: FieldInputEvent = (persistField) => {
|
||||||
onUpsertRecord({
|
onUpsertRecord({
|
||||||
persistField,
|
persistField,
|
||||||
entityId,
|
recordId,
|
||||||
fieldName: fieldDefinition.metadata.fieldName,
|
fieldName: fieldDefinition.metadata.fieldName,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -26,7 +28,7 @@ export const RecordTableCellFieldInput = () => {
|
|||||||
const handleSubmit: FieldInputEvent = (persistField) => {
|
const handleSubmit: FieldInputEvent = (persistField) => {
|
||||||
onUpsertRecord({
|
onUpsertRecord({
|
||||||
persistField,
|
persistField,
|
||||||
entityId,
|
recordId,
|
||||||
fieldName: fieldDefinition.metadata.fieldName,
|
fieldName: fieldDefinition.metadata.fieldName,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -40,7 +42,7 @@ export const RecordTableCellFieldInput = () => {
|
|||||||
const handleClickOutside: FieldInputEvent = (persistField) => {
|
const handleClickOutside: FieldInputEvent = (persistField) => {
|
||||||
onUpsertRecord({
|
onUpsertRecord({
|
||||||
persistField,
|
persistField,
|
||||||
entityId,
|
recordId,
|
||||||
fieldName: fieldDefinition.metadata.fieldName,
|
fieldName: fieldDefinition.metadata.fieldName,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -50,7 +52,7 @@ export const RecordTableCellFieldInput = () => {
|
|||||||
const handleEscape: FieldInputEvent = (persistField) => {
|
const handleEscape: FieldInputEvent = (persistField) => {
|
||||||
onUpsertRecord({
|
onUpsertRecord({
|
||||||
persistField,
|
persistField,
|
||||||
entityId,
|
recordId,
|
||||||
fieldName: fieldDefinition.metadata.fieldName,
|
fieldName: fieldDefinition.metadata.fieldName,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -60,7 +62,7 @@ export const RecordTableCellFieldInput = () => {
|
|||||||
const handleTab: FieldInputEvent = (persistField) => {
|
const handleTab: FieldInputEvent = (persistField) => {
|
||||||
onUpsertRecord({
|
onUpsertRecord({
|
||||||
persistField,
|
persistField,
|
||||||
entityId,
|
recordId,
|
||||||
fieldName: fieldDefinition.metadata.fieldName,
|
fieldName: fieldDefinition.metadata.fieldName,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -71,7 +73,7 @@ export const RecordTableCellFieldInput = () => {
|
|||||||
const handleShiftTab: FieldInputEvent = (persistField) => {
|
const handleShiftTab: FieldInputEvent = (persistField) => {
|
||||||
onUpsertRecord({
|
onUpsertRecord({
|
||||||
persistField,
|
persistField,
|
||||||
entityId,
|
recordId,
|
||||||
fieldName: fieldDefinition.metadata.fieldName,
|
fieldName: fieldDefinition.metadata.fieldName,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -81,7 +83,10 @@ export const RecordTableCellFieldInput = () => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<FieldInput
|
<FieldInput
|
||||||
recordFieldInputdId={`${entityId}-${fieldDefinition?.metadata?.fieldName}`}
|
recordFieldInputdId={getRecordFieldInputId(
|
||||||
|
recordId,
|
||||||
|
fieldDefinition?.metadata?.fieldName,
|
||||||
|
)}
|
||||||
onCancel={handleCancel}
|
onCancel={handleCancel}
|
||||||
onClickOutside={handleClickOutside}
|
onClickOutside={handleClickOutside}
|
||||||
onEnter={handleEnter}
|
onEnter={handleEnter}
|
||||||
|
|||||||
@ -33,7 +33,7 @@ const Wrapper = ({ children }: { children: React.ReactNode }) => (
|
|||||||
<FieldContext.Provider
|
<FieldContext.Provider
|
||||||
value={{
|
value={{
|
||||||
fieldDefinition: textfieldDefinition,
|
fieldDefinition: textfieldDefinition,
|
||||||
entityId: 'entityId',
|
recordId: 'recordId',
|
||||||
hotkeyScope: TableHotkeyScope.Table,
|
hotkeyScope: TableHotkeyScope.Table,
|
||||||
isLabelIdentifier: false,
|
isLabelIdentifier: false,
|
||||||
}}
|
}}
|
||||||
|
|||||||
@ -75,7 +75,7 @@ const Wrapper = ({
|
|||||||
>
|
>
|
||||||
<FieldContext.Provider
|
<FieldContext.Provider
|
||||||
value={{
|
value={{
|
||||||
entityId: 'entityId',
|
recordId: 'recordId',
|
||||||
fieldDefinition: {
|
fieldDefinition: {
|
||||||
...textfieldDefinition,
|
...textfieldDefinition,
|
||||||
metadata: {
|
metadata: {
|
||||||
@ -114,7 +114,7 @@ describe('useUpsertRecord', () => {
|
|||||||
await act(async () => {
|
await act(async () => {
|
||||||
await result.current.upsertRecord(
|
await result.current.upsertRecord(
|
||||||
updateOneRecordMock,
|
updateOneRecordMock,
|
||||||
'entityId',
|
'recordId',
|
||||||
'name',
|
'name',
|
||||||
'recordTableId',
|
'recordTableId',
|
||||||
);
|
);
|
||||||
@ -140,7 +140,7 @@ describe('useUpsertRecord', () => {
|
|||||||
await act(async () => {
|
await act(async () => {
|
||||||
await result.current.upsertRecord(
|
await result.current.upsertRecord(
|
||||||
updateOneRecordMock,
|
updateOneRecordMock,
|
||||||
'entityId',
|
'recordId',
|
||||||
'name',
|
'name',
|
||||||
'recordTableId',
|
'recordTableId',
|
||||||
);
|
);
|
||||||
|
|||||||
@ -23,14 +23,14 @@ export type OpenTableCellArgs = {
|
|||||||
pathToShowPage: string;
|
pathToShowPage: string;
|
||||||
customCellHotkeyScope: HotkeyScope | null;
|
customCellHotkeyScope: HotkeyScope | null;
|
||||||
fieldDefinition: FieldDefinition<FieldMetadata>;
|
fieldDefinition: FieldDefinition<FieldMetadata>;
|
||||||
entityId: string;
|
recordId: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const useOpenRecordTableCellFromCell = () => {
|
export const useOpenRecordTableCellFromCell = () => {
|
||||||
const { onOpenTableCell } = useContext(RecordTableContext);
|
const { onOpenTableCell } = useContext(RecordTableContext);
|
||||||
const cellPosition = useCurrentTableCellPosition();
|
const cellPosition = useCurrentTableCellPosition();
|
||||||
const customCellHotkeyScope = useContext(CellHotkeyScopeContext);
|
const customCellHotkeyScope = useContext(CellHotkeyScopeContext);
|
||||||
const { entityId, fieldDefinition } = useContext(FieldContext);
|
const { recordId, fieldDefinition } = useContext(FieldContext);
|
||||||
const { isReadOnly, pathToShowPage, objectNameSingular } = useContext(
|
const { isReadOnly, pathToShowPage, objectNameSingular } = useContext(
|
||||||
RecordTableRowContext,
|
RecordTableRowContext,
|
||||||
);
|
);
|
||||||
@ -42,7 +42,7 @@ export const useOpenRecordTableCellFromCell = () => {
|
|||||||
onOpenTableCell({
|
onOpenTableCell({
|
||||||
cellPosition,
|
cellPosition,
|
||||||
customCellHotkeyScope,
|
customCellHotkeyScope,
|
||||||
entityId,
|
recordId,
|
||||||
fieldDefinition,
|
fieldDefinition,
|
||||||
isReadOnly,
|
isReadOnly,
|
||||||
pathToShowPage,
|
pathToShowPage,
|
||||||
|
|||||||
@ -36,7 +36,7 @@ export type OpenTableCellArgs = {
|
|||||||
objectNameSingular: string;
|
objectNameSingular: string;
|
||||||
customCellHotkeyScope: HotkeyScope | null;
|
customCellHotkeyScope: HotkeyScope | null;
|
||||||
fieldDefinition: FieldDefinition<FieldMetadata>;
|
fieldDefinition: FieldDefinition<FieldMetadata>;
|
||||||
entityId: string;
|
recordId: string;
|
||||||
isActionButtonClick: boolean;
|
isActionButtonClick: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -70,7 +70,7 @@ export const useOpenRecordTableCellV2 = (tableScopeId: string) => {
|
|||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
customCellHotkeyScope,
|
customCellHotkeyScope,
|
||||||
fieldDefinition,
|
fieldDefinition,
|
||||||
entityId,
|
recordId,
|
||||||
isActionButtonClick,
|
isActionButtonClick,
|
||||||
}: OpenTableCellArgs) => {
|
}: OpenTableCellArgs) => {
|
||||||
if (isReadOnly) {
|
if (isReadOnly) {
|
||||||
@ -82,7 +82,7 @@ export const useOpenRecordTableCellV2 = (tableScopeId: string) => {
|
|||||||
const fieldValue = getSnapshotValue(
|
const fieldValue = getSnapshotValue(
|
||||||
snapshot,
|
snapshot,
|
||||||
recordStoreFamilySelector({
|
recordStoreFamilySelector({
|
||||||
recordId: entityId,
|
recordId,
|
||||||
fieldName: fieldDefinition.metadata.fieldName,
|
fieldName: fieldDefinition.metadata.fieldName,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
@ -95,14 +95,14 @@ export const useOpenRecordTableCellV2 = (tableScopeId: string) => {
|
|||||||
if (isFirstColumnCell && !isEmpty && !isActionButtonClick) {
|
if (isFirstColumnCell && !isEmpty && !isActionButtonClick) {
|
||||||
leaveTableFocus();
|
leaveTableFocus();
|
||||||
|
|
||||||
onIndexIdentifierClick(entityId);
|
onIndexIdentifierClick(recordId);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isFirstColumnCell && !isEmpty && isActionButtonClick) {
|
if (isFirstColumnCell && !isEmpty && isActionButtonClick) {
|
||||||
leaveTableFocus();
|
leaveTableFocus();
|
||||||
setViewableRecordId(entityId);
|
setViewableRecordId(recordId);
|
||||||
setViewableRecordNameSingular(objectNameSingular);
|
setViewableRecordNameSingular(objectNameSingular);
|
||||||
openRightDrawer(RightDrawerPages.ViewRecord);
|
openRightDrawer(RightDrawerPages.ViewRecord);
|
||||||
|
|
||||||
@ -115,7 +115,7 @@ export const useOpenRecordTableCellV2 = (tableScopeId: string) => {
|
|||||||
|
|
||||||
initDraftValue({
|
initDraftValue({
|
||||||
value: initialValue,
|
value: initialValue,
|
||||||
entityId,
|
recordId,
|
||||||
fieldDefinition,
|
fieldDefinition,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -24,7 +24,7 @@ export const useUpsertRecord = ({
|
|||||||
({ snapshot }) =>
|
({ snapshot }) =>
|
||||||
(
|
(
|
||||||
persistField: () => void,
|
persistField: () => void,
|
||||||
entityId: string,
|
recordId: string,
|
||||||
fieldName: string,
|
fieldName: string,
|
||||||
recordTableId: string,
|
recordTableId: string,
|
||||||
) => {
|
) => {
|
||||||
@ -55,7 +55,7 @@ export const useUpsertRecord = ({
|
|||||||
recordTablePendingRecordIdState,
|
recordTablePendingRecordIdState,
|
||||||
);
|
);
|
||||||
const fieldScopeId = getScopeIdFromComponentId(
|
const fieldScopeId = getScopeIdFromComponentId(
|
||||||
`${entityId}-${fieldName}`,
|
`${recordId}-${fieldName}`,
|
||||||
);
|
);
|
||||||
|
|
||||||
const draftValueSelector = extractComponentSelector(
|
const draftValueSelector = extractComponentSelector(
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import { useRelationPicker } from '@/object-record/relation-picker/hooks/useRela
|
|||||||
import { EntityForSelect } from '@/object-record/relation-picker/types/EntityForSelect';
|
import { EntityForSelect } from '@/object-record/relation-picker/types/EntityForSelect';
|
||||||
|
|
||||||
export type RelationPickerProps = {
|
export type RelationPickerProps = {
|
||||||
recordId?: string;
|
selectedRecordId?: string;
|
||||||
onSubmit: (selectedEntity: EntityForSelect | null) => void;
|
onSubmit: (selectedEntity: EntityForSelect | null) => void;
|
||||||
onCancel?: () => void;
|
onCancel?: () => void;
|
||||||
width?: number;
|
width?: number;
|
||||||
@ -21,7 +21,7 @@ export type RelationPickerProps = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const RelationPicker = ({
|
export const RelationPicker = ({
|
||||||
recordId,
|
selectedRecordId,
|
||||||
onSubmit,
|
onSubmit,
|
||||||
onCancel,
|
onCancel,
|
||||||
excludeRecordIds,
|
excludeRecordIds,
|
||||||
@ -52,7 +52,7 @@ export const RelationPicker = ({
|
|||||||
({ id }) => id === fieldDefinition.metadata.relationFieldMetadataId,
|
({ id }) => id === fieldDefinition.metadata.relationFieldMetadataId,
|
||||||
);
|
);
|
||||||
|
|
||||||
const { entityId } = useContext(FieldContext);
|
const { recordId } = useContext(FieldContext);
|
||||||
|
|
||||||
const { createNewRecordAndOpenRightDrawer } =
|
const { createNewRecordAndOpenRightDrawer } =
|
||||||
useAddNewRecordAndOpenRightDrawer({
|
useAddNewRecordAndOpenRightDrawer({
|
||||||
@ -60,7 +60,7 @@ export const RelationPicker = ({
|
|||||||
fieldDefinition.metadata.relationObjectMetadataNameSingular,
|
fieldDefinition.metadata.relationObjectMetadataNameSingular,
|
||||||
relationObjectMetadataItem,
|
relationObjectMetadataItem,
|
||||||
relationFieldMetadataItem,
|
relationFieldMetadataItem,
|
||||||
entityId,
|
recordId,
|
||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -75,7 +75,7 @@ export const RelationPicker = ({
|
|||||||
fieldDefinition.metadata.relationObjectMetadataNameSingular
|
fieldDefinition.metadata.relationObjectMetadataNameSingular
|
||||||
}
|
}
|
||||||
relationPickerScopeId={relationPickerScopeId}
|
relationPickerScopeId={relationPickerScopeId}
|
||||||
selectedRelationRecordIds={recordId ? [recordId] : []}
|
selectedRelationRecordIds={selectedRecordId ? [selectedRecordId] : []}
|
||||||
excludedRelationRecordIds={excludeRecordIds}
|
excludedRelationRecordIds={excludeRecordIds}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
|||||||
@ -20,13 +20,13 @@ type RecordDetailRelationSectionProps = {
|
|||||||
relationObjectMetadataNameSingular: string;
|
relationObjectMetadataNameSingular: string;
|
||||||
relationObjectMetadataItem: ObjectMetadataItem;
|
relationObjectMetadataItem: ObjectMetadataItem;
|
||||||
relationFieldMetadataItem?: FieldMetadataItem;
|
relationFieldMetadataItem?: FieldMetadataItem;
|
||||||
entityId: string;
|
recordId: string;
|
||||||
};
|
};
|
||||||
export const useAddNewRecordAndOpenRightDrawer = ({
|
export const useAddNewRecordAndOpenRightDrawer = ({
|
||||||
relationObjectMetadataNameSingular,
|
relationObjectMetadataNameSingular,
|
||||||
relationObjectMetadataItem,
|
relationObjectMetadataItem,
|
||||||
relationFieldMetadataItem,
|
relationFieldMetadataItem,
|
||||||
entityId,
|
recordId,
|
||||||
}: RecordDetailRelationSectionProps) => {
|
}: RecordDetailRelationSectionProps) => {
|
||||||
const setViewableRecordId = useSetRecoilState(viewableRecordIdState);
|
const setViewableRecordId = useSetRecoilState(viewableRecordIdState);
|
||||||
const setViewableRecordNameSingular = useSetRecoilState(
|
const setViewableRecordNameSingular = useSetRecoilState(
|
||||||
@ -89,7 +89,7 @@ export const useAddNewRecordAndOpenRightDrawer = ({
|
|||||||
) {
|
) {
|
||||||
createRecordPayload[
|
createRecordPayload[
|
||||||
`${relationFieldMetadataItem?.relationDefinition?.sourceFieldMetadata.name}Id`
|
`${relationFieldMetadataItem?.relationDefinition?.sourceFieldMetadata.name}Id`
|
||||||
] = entityId;
|
] = recordId;
|
||||||
}
|
}
|
||||||
|
|
||||||
await createOneRecord(createRecordPayload);
|
await createOneRecord(createRecordPayload);
|
||||||
@ -99,7 +99,7 @@ export const useAddNewRecordAndOpenRightDrawer = ({
|
|||||||
RelationDefinitionType.OneToMany
|
RelationDefinitionType.OneToMany
|
||||||
) {
|
) {
|
||||||
await updateOneRecord({
|
await updateOneRecord({
|
||||||
idToUpdate: entityId,
|
idToUpdate: recordId,
|
||||||
updateOneRecordInput: {
|
updateOneRecordInput: {
|
||||||
[`${relationFieldMetadataItem?.relationDefinition?.targetFieldMetadata.name}Id`]:
|
[`${relationFieldMetadataItem?.relationDefinition?.targetFieldMetadata.name}Id`]:
|
||||||
newRecordId,
|
newRecordId,
|
||||||
|
|||||||
@ -37,7 +37,7 @@ export const useRelationPickerEntitiesOptions = ({
|
|||||||
],
|
],
|
||||||
orderByField: 'createdAt',
|
orderByField: 'createdAt',
|
||||||
selectedIds: selectedRelationRecordIds,
|
selectedIds: selectedRelationRecordIds,
|
||||||
excludeEntityIds: excludedRelationRecordIds,
|
excludeRecordIds: excludedRelationRecordIds,
|
||||||
objectNameSingular: relationObjectNameSingular,
|
objectNameSingular: relationObjectNameSingular,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -15,14 +15,14 @@ export const useRecordsForSelect = ({
|
|||||||
sortOrder = 'AscNullsLast',
|
sortOrder = 'AscNullsLast',
|
||||||
selectedIds,
|
selectedIds,
|
||||||
limit,
|
limit,
|
||||||
excludeEntityIds = [],
|
excludeRecordIds = [],
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
}: {
|
}: {
|
||||||
searchFilterText: string;
|
searchFilterText: string;
|
||||||
sortOrder?: OrderBy;
|
sortOrder?: OrderBy;
|
||||||
selectedIds: string[];
|
selectedIds: string[];
|
||||||
limit?: number;
|
limit?: number;
|
||||||
excludeEntityIds?: string[];
|
excludeRecordIds?: string[];
|
||||||
objectNameSingular: string;
|
objectNameSingular: string;
|
||||||
}) => {
|
}) => {
|
||||||
const { mapToObjectRecordIdentifier } = useMapToObjectRecordIdentifier({
|
const { mapToObjectRecordIdentifier } = useMapToObjectRecordIdentifier({
|
||||||
@ -90,7 +90,7 @@ export const useRecordsForSelect = ({
|
|||||||
skip: !selectedIds.length,
|
skip: !selectedIds.length,
|
||||||
});
|
});
|
||||||
|
|
||||||
const notFilterIds = [...selectedIds, ...excludeEntityIds];
|
const notFilterIds = [...selectedIds, ...excludeRecordIds];
|
||||||
const notFilter = notFilterIds.length
|
const notFilter = notFilterIds.length
|
||||||
? { not: { id: { in: notFilterIds } } }
|
? { not: { id: { in: notFilterIds } } }
|
||||||
: undefined;
|
: undefined;
|
||||||
|
|||||||
@ -0,0 +1,4 @@
|
|||||||
|
export const getRecordFieldInputId = (recordId: string, fieldName?: string): string => {
|
||||||
|
return `${recordId}-${fieldName}`;
|
||||||
|
};
|
||||||
|
|
||||||
@ -87,7 +87,7 @@ describe('useFilteredSearchEntityQuery', () => {
|
|||||||
sortOrder: 'AscNullsLast',
|
sortOrder: 'AscNullsLast',
|
||||||
selectedIds: ['1'],
|
selectedIds: ['1'],
|
||||||
limit: 10,
|
limit: 10,
|
||||||
excludeEntityIds: ['2'],
|
excludeRecordIds: ['2'],
|
||||||
objectNameSingular: 'person',
|
objectNameSingular: 'person',
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|||||||
@ -24,7 +24,7 @@ export const useFilteredSearchEntityQuery = ({
|
|||||||
sortOrder = 'AscNullsLast',
|
sortOrder = 'AscNullsLast',
|
||||||
selectedIds,
|
selectedIds,
|
||||||
limit,
|
limit,
|
||||||
excludeEntityIds = [],
|
excludeRecordIds = [],
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
}: {
|
}: {
|
||||||
orderByField: string;
|
orderByField: string;
|
||||||
@ -32,7 +32,7 @@ export const useFilteredSearchEntityQuery = ({
|
|||||||
sortOrder?: OrderBy;
|
sortOrder?: OrderBy;
|
||||||
selectedIds: string[];
|
selectedIds: string[];
|
||||||
limit?: number;
|
limit?: number;
|
||||||
excludeEntityIds?: string[];
|
excludeRecordIds?: string[];
|
||||||
objectNameSingular: string;
|
objectNameSingular: string;
|
||||||
}): EntitiesForMultipleEntitySelect<EntityForSelect> => {
|
}): EntitiesForMultipleEntitySelect<EntityForSelect> => {
|
||||||
const { mapToObjectRecordIdentifier } = useMapToObjectRecordIdentifier({
|
const { mapToObjectRecordIdentifier } = useMapToObjectRecordIdentifier({
|
||||||
@ -97,7 +97,7 @@ export const useFilteredSearchEntityQuery = ({
|
|||||||
skip: !selectedIds.length,
|
skip: !selectedIds.length,
|
||||||
});
|
});
|
||||||
|
|
||||||
const notFilterIds = [...selectedIds, ...excludeEntityIds];
|
const notFilterIds = [...selectedIds, ...excludeRecordIds];
|
||||||
const notFilter = notFilterIds.length
|
const notFilter = notFilterIds.length
|
||||||
? { not: { id: { in: notFilterIds } } }
|
? { not: { id: { in: notFilterIds } } }
|
||||||
: undefined;
|
: undefined;
|
||||||
|
|||||||
@ -89,7 +89,7 @@ export const SettingsDataModelFieldPreview = ({
|
|||||||
|
|
||||||
const fieldName =
|
const fieldName =
|
||||||
fieldMetadataItem.name || `${fieldMetadataItem.type}-new-field`;
|
fieldMetadataItem.name || `${fieldMetadataItem.type}-new-field`;
|
||||||
const entityId =
|
const recordId =
|
||||||
previewRecord?.id ??
|
previewRecord?.id ??
|
||||||
`${objectMetadataItem.nameSingular}-${fieldName}-preview`;
|
`${objectMetadataItem.nameSingular}-${fieldName}-preview`;
|
||||||
|
|
||||||
@ -99,7 +99,7 @@ export const SettingsDataModelFieldPreview = ({
|
|||||||
<SettingsDataModelSetRecordEffect record={previewRecord} />
|
<SettingsDataModelSetRecordEffect record={previewRecord} />
|
||||||
) : (
|
) : (
|
||||||
<SettingsDataModelSetFieldValueEffect
|
<SettingsDataModelSetFieldValueEffect
|
||||||
entityId={entityId}
|
recordId={recordId}
|
||||||
fieldName={fieldName}
|
fieldName={fieldName}
|
||||||
value={fieldPreviewValue}
|
value={fieldPreviewValue}
|
||||||
/>
|
/>
|
||||||
@ -116,7 +116,7 @@ export const SettingsDataModelFieldPreview = ({
|
|||||||
)}
|
)}
|
||||||
<FieldContext.Provider
|
<FieldContext.Provider
|
||||||
value={{
|
value={{
|
||||||
entityId,
|
recordId,
|
||||||
isLabelIdentifier,
|
isLabelIdentifier,
|
||||||
fieldDefinition: {
|
fieldDefinition: {
|
||||||
type: fieldMetadataItem.type,
|
type: fieldMetadataItem.type,
|
||||||
|
|||||||
@ -5,19 +5,19 @@ import { useSetRecordFieldValue } from '@/object-record/record-store/contexts/Re
|
|||||||
import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector';
|
import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector';
|
||||||
|
|
||||||
type SettingsDataModelSetFieldValueEffectProps = {
|
type SettingsDataModelSetFieldValueEffectProps = {
|
||||||
entityId: string;
|
recordId: string;
|
||||||
fieldName: string;
|
fieldName: string;
|
||||||
value: unknown;
|
value: unknown;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const SettingsDataModelSetFieldValueEffect = ({
|
export const SettingsDataModelSetFieldValueEffect = ({
|
||||||
entityId,
|
recordId,
|
||||||
fieldName,
|
fieldName,
|
||||||
value,
|
value,
|
||||||
}: SettingsDataModelSetFieldValueEffectProps) => {
|
}: SettingsDataModelSetFieldValueEffectProps) => {
|
||||||
const setFieldValue = useSetRecoilState(
|
const setFieldValue = useSetRecoilState(
|
||||||
recordStoreFamilySelector({
|
recordStoreFamilySelector({
|
||||||
recordId: entityId,
|
recordId,
|
||||||
fieldName,
|
fieldName,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
@ -26,8 +26,8 @@ export const SettingsDataModelSetFieldValueEffect = ({
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setFieldValue(value);
|
setFieldValue(value);
|
||||||
setRecordFieldValue(entityId, fieldName, value);
|
setRecordFieldValue(recordId, fieldName, value);
|
||||||
}, [value, setFieldValue, setRecordFieldValue, entityId, fieldName]);
|
}, [value, setFieldValue, setRecordFieldValue, recordId, fieldName]);
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
};
|
};
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user