77 create new record action and remove old behavior (#9598)
Closes https://github.com/twentyhq/core-team-issues/issues/77
This commit is contained in:
@ -46,7 +46,8 @@ export const RecordIndexPageHeader = () => {
|
||||
|
||||
const shouldDisplayAddButton =
|
||||
(numberOfSelectedRecords === 0 || !isCommandMenuV2Enabled) &&
|
||||
!isObjectMetadataItemReadOnly;
|
||||
!isObjectMetadataItemReadOnly &&
|
||||
!isCommandMenuV2Enabled;
|
||||
|
||||
const isTable = recordIndexViewType === ViewType.Table;
|
||||
|
||||
|
||||
@ -4,9 +4,12 @@ import { PageAddButton } from '@/ui/layout/page/components/PageAddButton';
|
||||
import { PageHotkeysEffect } from '@/ui/layout/page/components/PageHotkeysEffect';
|
||||
|
||||
export const RecordIndexPageTableAddButtonNoGroup = () => {
|
||||
const { recordIndexId } = useRecordIndexContextOrThrow();
|
||||
const { recordIndexId, objectMetadataItem } = useRecordIndexContextOrThrow();
|
||||
|
||||
const { createNewTableRecord } = useCreateNewTableRecord(recordIndexId);
|
||||
const { createNewTableRecord } = useCreateNewTableRecord({
|
||||
objectMetadataItem,
|
||||
recordTableId: recordIndexId,
|
||||
});
|
||||
|
||||
const handleCreateNewTableRecord = () => {
|
||||
createNewTableRecord();
|
||||
|
||||
@ -10,21 +10,15 @@ import { useRecordShowPage } from '@/object-record/record-show/hooks/useRecordSh
|
||||
import { RecordValueSetterEffect } from '@/object-record/record-store/components/RecordValueSetterEffect';
|
||||
import { RecordFieldValueSelectorContextProvider } from '@/object-record/record-store/contexts/RecordFieldValueSelectorContext';
|
||||
import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile';
|
||||
import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled';
|
||||
import styled from '@emotion/styled';
|
||||
import { FeatureFlagKey } from '~/generated/graphql';
|
||||
|
||||
const StyledRightDrawerRecord = styled.div<{ hasTopBar: boolean }>`
|
||||
height: ${({ theme, hasTopBar }) =>
|
||||
hasTopBar ? `calc(100% - ${theme.spacing(16)})` : '100%'};
|
||||
const StyledRightDrawerRecord = styled.div<{ isMobile: boolean }>`
|
||||
height: ${({ theme, isMobile }) =>
|
||||
isMobile ? `calc(100% - ${theme.spacing(16)})` : '100%'};
|
||||
`;
|
||||
|
||||
export const RightDrawerRecord = () => {
|
||||
const isCommandMenuV2Enabled = useIsFeatureEnabled(
|
||||
FeatureFlagKey.IsCommandMenuV2Enabled,
|
||||
);
|
||||
const isMobile = useIsMobile();
|
||||
const hasTopBar = isCommandMenuV2Enabled || isMobile;
|
||||
|
||||
const viewableRecordNameSingular = useRecoilValue(
|
||||
viewableRecordNameSingularState,
|
||||
@ -56,7 +50,7 @@ export const RightDrawerRecord = () => {
|
||||
<ActionMenuComponentInstanceContext.Provider
|
||||
value={{ instanceId: `record-show-${objectRecordId}` }}
|
||||
>
|
||||
<StyledRightDrawerRecord hasTopBar={hasTopBar}>
|
||||
<StyledRightDrawerRecord isMobile={isMobile}>
|
||||
<RecordFieldValueSelectorContextProvider>
|
||||
{!isNewViewableRecordLoading && (
|
||||
<RecordValueSetterEffect recordId={objectRecordId} />
|
||||
|
||||
@ -8,7 +8,10 @@ import { useCreateNewTableRecord } from '@/object-record/record-table/hooks/useC
|
||||
export const RecordTableEmptyStateNoGroupNoRecordAtAll = () => {
|
||||
const { objectMetadataItem, recordTableId } = useRecordTableContextOrThrow();
|
||||
|
||||
const { createNewTableRecord } = useCreateNewTableRecord(recordTableId);
|
||||
const { createNewTableRecord } = useCreateNewTableRecord({
|
||||
objectMetadataItem,
|
||||
recordTableId,
|
||||
});
|
||||
|
||||
const handleButtonClick = () => {
|
||||
createNewTableRecord();
|
||||
|
||||
@ -8,7 +8,10 @@ import { useCreateNewTableRecord } from '@/object-record/record-table/hooks/useC
|
||||
export const RecordTableEmptyStateNoRecordFoundForFilter = () => {
|
||||
const { recordTableId, objectMetadataItem } = useRecordTableContextOrThrow();
|
||||
|
||||
const { createNewTableRecord } = useCreateNewTableRecord(recordTableId);
|
||||
const { createNewTableRecord } = useCreateNewTableRecord({
|
||||
objectMetadataItem,
|
||||
recordTableId,
|
||||
});
|
||||
|
||||
const handleButtonClick = () => {
|
||||
createNewTableRecord();
|
||||
|
||||
@ -1,4 +1,6 @@
|
||||
import { useRecordIndexContextOrThrow } from '@/object-record/record-index/contexts/RecordIndexContext';
|
||||
import { useCommandMenu } from '@/command-menu/hooks/useCommandMenu';
|
||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||
import { useCreateOneRecord } from '@/object-record/hooks/useCreateOneRecord';
|
||||
import { DEFAULT_CELL_SCOPE } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2';
|
||||
import { useSelectedTableCellEditMode } from '@/object-record/record-table/record-table-cell/hooks/useSelectedTableCellEditMode';
|
||||
import { recordTablePendingRecordIdByGroupComponentFamilyState } from '@/object-record/record-table/states/recordTablePendingRecordIdByGroupComponentFamilyState';
|
||||
@ -8,13 +10,19 @@ import { useSetActiveDropdownFocusIdAndMemorizePrevious } from '@/ui/layout/drop
|
||||
import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope';
|
||||
import { useRecoilComponentCallbackStateV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentCallbackStateV2';
|
||||
import { useSetRecoilComponentStateV2 } from '@/ui/utilities/state/component-state/hooks/useSetRecoilComponentStateV2';
|
||||
import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled';
|
||||
import { useRecoilCallback } from 'recoil';
|
||||
import { v4 } from 'uuid';
|
||||
import { FeatureFlagKey } from '~/generated/graphql';
|
||||
import { isDefined } from '~/utils/isDefined';
|
||||
|
||||
export const useCreateNewTableRecord = (recordTableId: string) => {
|
||||
const { objectMetadataItem } = useRecordIndexContextOrThrow();
|
||||
|
||||
export const useCreateNewTableRecord = ({
|
||||
objectMetadataItem,
|
||||
recordTableId,
|
||||
}: {
|
||||
objectMetadataItem: ObjectMetadataItem;
|
||||
recordTableId: string;
|
||||
}) => {
|
||||
const { setSelectedTableCellEditMode } = useSelectedTableCellEditMode({
|
||||
scopeId: recordTableId,
|
||||
});
|
||||
@ -35,9 +43,27 @@ export const useCreateNewTableRecord = (recordTableId: string) => {
|
||||
const { setActiveDropdownFocusIdAndMemorizePrevious } =
|
||||
useSetActiveDropdownFocusIdAndMemorizePrevious();
|
||||
|
||||
const createNewTableRecord = () => {
|
||||
const { openRecordInCommandMenu } = useCommandMenu();
|
||||
|
||||
const isCommandMenuV2Enabled = useIsFeatureEnabled(
|
||||
FeatureFlagKey.IsCommandMenuV2Enabled,
|
||||
);
|
||||
|
||||
const { createOneRecord } = useCreateOneRecord({
|
||||
objectNameSingular: objectMetadataItem.nameSingular,
|
||||
shouldMatchRootQueryFilter: true,
|
||||
});
|
||||
|
||||
const createNewTableRecord = async () => {
|
||||
const recordId = v4();
|
||||
|
||||
if (isCommandMenuV2Enabled) {
|
||||
await createOneRecord({ id: recordId });
|
||||
|
||||
openRecordInCommandMenu(recordId, objectMetadataItem.nameSingular);
|
||||
return;
|
||||
}
|
||||
|
||||
setPendingRecordId(recordId);
|
||||
setSelectedTableCellEditMode(-1, 0);
|
||||
setHotkeyScope(DEFAULT_CELL_SCOPE.scope, DEFAULT_CELL_SCOPE.customScopes);
|
||||
|
||||
@ -201,7 +201,10 @@ export const RecordTableHeaderCell = ({
|
||||
const disableColumnResize =
|
||||
column.isLabelIdentifier && isMobile && !isRecordTableScrolledLeft;
|
||||
|
||||
const { createNewTableRecord } = useCreateNewTableRecord(recordTableId);
|
||||
const { createNewTableRecord } = useCreateNewTableRecord({
|
||||
objectMetadataItem,
|
||||
recordTableId,
|
||||
});
|
||||
|
||||
const handlePlusButtonClick = () => {
|
||||
createNewTableRecord();
|
||||
|
||||
@ -7,7 +7,7 @@ import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/
|
||||
import { IconPlus } from 'twenty-ui';
|
||||
|
||||
export const RecordTableRecordGroupSectionAddNew = () => {
|
||||
const { recordTableId } = useRecordTableContextOrThrow();
|
||||
const { recordTableId, objectMetadataItem } = useRecordTableContextOrThrow();
|
||||
|
||||
const currentRecordGroupId = useCurrentRecordGroupId();
|
||||
|
||||
@ -15,8 +15,10 @@ export const RecordTableRecordGroupSectionAddNew = () => {
|
||||
recordIndexAllRecordIdsComponentSelector,
|
||||
);
|
||||
|
||||
const { createNewTableRecordInGroup } =
|
||||
useCreateNewTableRecord(recordTableId);
|
||||
const { createNewTableRecordInGroup } = useCreateNewTableRecord({
|
||||
objectMetadataItem,
|
||||
recordTableId,
|
||||
});
|
||||
|
||||
const handleAddNewRecord = () => {
|
||||
createNewTableRecordInGroup(currentRecordGroupId);
|
||||
|
||||
@ -0,0 +1,5 @@
|
||||
export const getRecordIndexIdFromObjectNamePlural = (
|
||||
objectNamePlural: string,
|
||||
) => {
|
||||
return objectNamePlural;
|
||||
};
|
||||
Reference in New Issue
Block a user