Resolve bugs tied to record creations on table (#4011)

* Resolve bugs tied to record creations on table

* Fix according to PR

* Fix tests
This commit is contained in:
Charles Bochet
2024-02-16 15:03:57 +01:00
committed by GitHub
parent 595b2f9e6f
commit 6f2b0f2068
8 changed files with 71 additions and 76 deletions

View File

@ -1,19 +1,15 @@
import { useParams } from 'react-router-dom';
import styled from '@emotion/styled';
import { useObjectMetadataItemForSettings } from '@/object-metadata/hooks/useObjectMetadataItemForSettings';
import { useObjectNameSingularFromPlural } from '@/object-metadata/hooks/useObjectNameSingularFromPlural';
import { useCreateOneRecord } from '@/object-record/hooks/useCreateOneRecord';
import { RecordIndexContainer } from '@/object-record/record-index/components/RecordIndexContainer';
import { DEFAULT_CELL_SCOPE } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCell';
import { useSelectedTableCellEditMode } from '@/object-record/record-table/record-table-cell/hooks/useSelectedTableCellEditMode';
import { useIcons } from '@/ui/display/icon/hooks/useIcons';
import { PageAddButton } from '@/ui/layout/page/PageAddButton';
import { PageBody } from '@/ui/layout/page/PageBody';
import { PageContainer } from '@/ui/layout/page/PageContainer';
import { PageHeader } from '@/ui/layout/page/PageHeader';
import { PageHotkeysEffect } from '@/ui/layout/page/PageHotkeysEffect';
import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope';
import { RecordIndexPageHeader } from '~/pages/object-record/RecordIndexPageHeader';
const StyledIndexContainer = styled.div`
display: flex;
@ -28,20 +24,11 @@ export const RecordIndexPage = () => {
objectNamePlural,
});
const { findObjectMetadataItemByNamePlural } =
useObjectMetadataItemForSettings();
const { getIcon } = useIcons();
const Icon = getIcon(
findObjectMetadataItemByNamePlural(objectNamePlural)?.icon,
);
const { createOneRecord: createOneObject } = useCreateOneRecord({
objectNameSingular,
});
const recordIndexId = objectNamePlural ?? '';
const setHotkeyScope = useSetHotkeyScope();
const { setSelectedTableCellEditMode } = useSelectedTableCellEditMode({
@ -49,7 +36,9 @@ export const RecordIndexPage = () => {
});
const handleAddButtonClick = async () => {
await createOneObject?.({});
await createOneObject?.({
position: 0,
});
setSelectedTableCellEditMode(0, 0);
setHotkeyScope(DEFAULT_CELL_SCOPE.scope, DEFAULT_CELL_SCOPE.customScopes);
@ -57,15 +46,7 @@ export const RecordIndexPage = () => {
return (
<PageContainer>
<PageHeader
title={
objectNamePlural.charAt(0).toUpperCase() + objectNamePlural.slice(1)
}
Icon={Icon}
>
<PageHotkeysEffect onAddButtonClick={handleAddButtonClick} />
<PageAddButton onClick={handleAddButtonClick} />
</PageHeader>
<RecordIndexPageHeader createRecord={handleAddButtonClick} />
<PageBody>
<StyledIndexContainer>
<RecordIndexContainer

View File

@ -0,0 +1,40 @@
import { useParams } from 'react-router-dom';
import { useRecoilValue } from 'recoil';
import { useObjectMetadataItemForSettings } from '@/object-metadata/hooks/useObjectMetadataItemForSettings';
import { recordIndexViewTypeState } from '@/object-record/record-index/states/recordIndexViewTypeState';
import { useIcons } from '@/ui/display/icon/hooks/useIcons';
import { PageAddButton } from '@/ui/layout/page/PageAddButton';
import { PageHeader } from '@/ui/layout/page/PageHeader';
import { PageHotkeysEffect } from '@/ui/layout/page/PageHotkeysEffect';
import { ViewType } from '@/views/types/ViewType';
import { capitalize } from '~/utils/string/capitalize';
type RecordIndexPageHeaderProps = {
createRecord: () => void;
};
export const RecordIndexPageHeader = ({
createRecord,
}: RecordIndexPageHeaderProps) => {
const objectNamePlural = useParams().objectNamePlural ?? '';
const { findObjectMetadataItemByNamePlural } =
useObjectMetadataItemForSettings();
const { getIcon } = useIcons();
const Icon = getIcon(
findObjectMetadataItemByNamePlural(objectNamePlural)?.icon,
);
const recordIndexViewType = useRecoilValue(recordIndexViewTypeState);
return (
<PageHeader title={capitalize(objectNamePlural)} Icon={Icon}>
<PageHotkeysEffect onAddButtonClick={createRecord} />
{recordIndexViewType === ViewType.Table && (
<PageAddButton onClick={createRecord} />
)}
</PageHeader>
);
};