Calendar View: persist field updates (#14517)
<img width="1919" height="956" alt="image" src="https://github.com/user-attachments/assets/726738db-68fc-4cdc-949a-d2adc29a436c" />
This commit is contained in:
+2
-1
@@ -11,8 +11,9 @@ const StyledContainer = styled.div<{ isOtherMonth: boolean }>`
|
||||
width: calc(100% / 7);
|
||||
flex-direction: column;
|
||||
min-height: 122px;
|
||||
padding: ${({ theme }) => theme.spacing(0.5)};
|
||||
padding: ${({ theme }) => theme.spacing(1)};
|
||||
background: ${({ theme }) => theme.background.primary};
|
||||
min-width: 0;
|
||||
|
||||
&:not(:last-child) {
|
||||
border-right: 0.5px solid ${({ theme }) => theme.border.color.light};
|
||||
|
||||
+9
-1
@@ -4,6 +4,7 @@ import { RecordCalendarCardBody } from '@/object-record/record-calendar/record-c
|
||||
import { RecordCalendarCardHeader } from '@/object-record/record-calendar/record-calendar-card/components/RecordCalendarCardHeader';
|
||||
import { RecordCalendarCardComponentInstanceContext } from '@/object-record/record-calendar/record-calendar-card/states/contexts/RecordCalendarCardComponentInstanceContext';
|
||||
import { RecordCard } from '@/object-record/record-card/components/RecordCard';
|
||||
import { useOpenRecordFromIndexView } from '@/object-record/record-index/hooks/useOpenRecordFromIndexView';
|
||||
import styled from '@emotion/styled';
|
||||
|
||||
const StyledContainer = styled.div`
|
||||
@@ -12,6 +13,7 @@ const StyledContainer = styled.div`
|
||||
|
||||
const StyledRecordCard = styled(RecordCard)`
|
||||
margin-bottom: ${({ theme }) => theme.spacing(1)};
|
||||
width: calc(100% - 2px);
|
||||
`;
|
||||
|
||||
type RecordCalendarCardProps = {
|
||||
@@ -19,6 +21,12 @@ type RecordCalendarCardProps = {
|
||||
};
|
||||
|
||||
export const RecordCalendarCard = ({ recordId }: RecordCalendarCardProps) => {
|
||||
const { openRecordFromIndexView } = useOpenRecordFromIndexView();
|
||||
|
||||
const handleCardClick = () => {
|
||||
openRecordFromIndexView({ recordId });
|
||||
};
|
||||
|
||||
return (
|
||||
<RecordCalendarCardComponentInstanceContext.Provider
|
||||
value={{
|
||||
@@ -26,7 +34,7 @@ export const RecordCalendarCard = ({ recordId }: RecordCalendarCardProps) => {
|
||||
}}
|
||||
>
|
||||
<StyledContainer>
|
||||
<StyledRecordCard>
|
||||
<StyledRecordCard onClick={handleCardClick}>
|
||||
<RecordCalendarCardHeader recordId={recordId} />
|
||||
<RecordCalendarCardBody
|
||||
recordId={recordId}
|
||||
|
||||
+24
-3
@@ -1,3 +1,4 @@
|
||||
import { useUpdateOneRecord } from '@/object-record/hooks/useUpdateOneRecord';
|
||||
import { isRecordFieldReadOnly } from '@/object-record/read-only/utils/isRecordFieldReadOnly';
|
||||
import { StopPropagationContainer } from '@/object-record/record-board/record-board-card/components/StopPropagationContainer';
|
||||
import { useRecordCalendarContextOrThrow } from '@/object-record/record-calendar/contexts/RecordCalendarContext';
|
||||
@@ -5,7 +6,11 @@ import { RECORD_CALENDAR_CARD_INPUT_ID_PREFIX } from '@/object-record/record-cal
|
||||
import { recordCalendarCardHoverPositionComponentState } from '@/object-record/record-calendar/record-calendar-card/states/recordCalendarCardHoverPositionComponentState';
|
||||
import { RecordCardBodyContainer } from '@/object-record/record-card/components/RecordCardBodyContainer';
|
||||
import { visibleRecordFieldsComponentSelector } from '@/object-record/record-field/states/visibleRecordFieldsComponentSelector';
|
||||
import { FieldContext } from '@/object-record/record-field/ui/contexts/FieldContext';
|
||||
import {
|
||||
FieldContext,
|
||||
type RecordUpdateHook,
|
||||
type RecordUpdateHookParams,
|
||||
} from '@/object-record/record-field/ui/contexts/FieldContext';
|
||||
import { RecordFieldComponentInstanceContext } from '@/object-record/record-field/ui/states/contexts/RecordFieldComponentInstanceContext';
|
||||
import { useRecordIndexContextOrThrow } from '@/object-record/record-index/contexts/RecordIndexContext';
|
||||
import { RecordInlineCell } from '@/object-record/record-inline-cell/components/RecordInlineCell';
|
||||
@@ -22,7 +27,23 @@ export const RecordCalendarCardBody = ({
|
||||
recordId,
|
||||
isRecordReadOnly,
|
||||
}: RecordCalendarCardBodyProps) => {
|
||||
const { objectPermissions } = useRecordCalendarContextOrThrow();
|
||||
const { objectPermissions, objectMetadataItem } =
|
||||
useRecordCalendarContextOrThrow();
|
||||
|
||||
const { updateOneRecord } = useUpdateOneRecord({
|
||||
objectNameSingular: objectMetadataItem.nameSingular,
|
||||
});
|
||||
|
||||
const useUpdateOneRecordHook: RecordUpdateHook = () => {
|
||||
const updateEntity = ({ variables }: RecordUpdateHookParams) => {
|
||||
updateOneRecord?.({
|
||||
idToUpdate: variables.where.id as string,
|
||||
updateOneRecordInput: variables.updateOneRecordInput,
|
||||
});
|
||||
};
|
||||
|
||||
return [updateEntity, { loading: false }];
|
||||
};
|
||||
|
||||
const {
|
||||
labelIdentifierFieldMetadataItem,
|
||||
@@ -70,7 +91,7 @@ export const RecordCalendarCardBody = ({
|
||||
},
|
||||
}),
|
||||
fieldDefinition: correspondingFieldDefinition,
|
||||
useUpdateRecord: () => [() => undefined, { loading: false }],
|
||||
useUpdateRecord: useUpdateOneRecordHook,
|
||||
isDisplayModeFixHeight: true,
|
||||
triggerEvent: 'CLICK',
|
||||
anchorId: `${RECORD_CALENDAR_CARD_INPUT_ID_PREFIX}-${recordId}-${correspondingFieldDefinition.metadata.fieldName}`,
|
||||
|
||||
Reference in New Issue
Block a user