From 9bd42121d37bfc04ae277048db462dbe41e24f08 Mon Sep 17 00:00:00 2001 From: Emilien Chauvet Date: Wed, 9 Aug 2023 17:17:35 +0200 Subject: [PATCH] Add company creation from people table (#1100) * Add company creation from people table * Design --- .../components/CompanyPickerCell.tsx | 43 +++++++++++++++++-- .../components/SingleEntitySelect.tsx | 22 +++++----- .../GenericEditableRelationCellEditMode.tsx | 1 + 3 files changed, 51 insertions(+), 15 deletions(-) diff --git a/front/src/modules/companies/components/CompanyPickerCell.tsx b/front/src/modules/companies/components/CompanyPickerCell.tsx index 92e0aa7a1..d587c4eef 100644 --- a/front/src/modules/companies/components/CompanyPickerCell.tsx +++ b/front/src/modules/companies/components/CompanyPickerCell.tsx @@ -2,10 +2,13 @@ import { useFilteredSearchCompanyQuery } from '@/companies/queries'; import { SingleEntitySelect } from '@/ui/input/relation-picker/components/SingleEntitySelect'; import { relationPickerSearchFilterScopedState } from '@/ui/input/relation-picker/states/relationPickerSearchFilterScopedState'; import { EntityForSelect } from '@/ui/input/relation-picker/types/EntityForSelect'; +import { Entity } from '@/ui/input/relation-picker/types/EntityTypeForSelect'; import { isCreateModeScopedState } from '@/ui/table/editable-cell/states/isCreateModeScopedState'; +import { DoubleTextCellEdit } from '@/ui/table/editable-cell/type/components/DoubleTextCellEdit'; import { TableHotkeyScope } from '@/ui/table/types/TableHotkeyScope'; import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope'; import { useRecoilScopedState } from '@/ui/utilities/recoil-scope/hooks/useRecoilScopedState'; +import { useInsertOneCompanyMutation } from '~/generated/graphql'; export type OwnProps = { companyId: string | null; @@ -22,7 +25,11 @@ export function CompanyPickerCell({ createModeEnabled, width, }: OwnProps) { - const [, setIsCreating] = useRecoilScopedState(isCreateModeScopedState); + const [isCreating, setIsCreating] = useRecoilScopedState( + isCreateModeScopedState, + ); + + const [insertCompany] = useInsertOneCompanyMutation(); const [searchFilter] = useRecoilScopedState( relationPickerSearchFilterScopedState, @@ -41,15 +48,43 @@ export function CompanyPickerCell({ onSubmit(entity ?? null); } - function handleCreate() { + function handleStartCreation() { setIsCreating(true); setHotkeyScope(TableHotkeyScope.CellDoubleTextInput); } - return ( + async function handleCreate(firstValue: string, secondValue: string) { + const insertCompanyRequest = await insertCompany({ + variables: { + data: { + name: firstValue, + domainName: secondValue, + address: '', + }, + }, + }); + const companyCreated = insertCompanyRequest.data?.createOneCompany; + companyCreated && + onSubmit({ + id: companyCreated.id, + name: companyCreated.name, + entityType: Entity.Company, + }); + setIsCreating(false); + } + + return isCreating ? ( + + ) : ( - {showCreateButton && ( - <> - - - - Create new - - - - - )} + {showCreateButton && ( + <> + + + + Add New + + + + + )} ); } diff --git a/front/src/modules/ui/table/editable-cell/type/components/GenericEditableRelationCellEditMode.tsx b/front/src/modules/ui/table/editable-cell/type/components/GenericEditableRelationCellEditMode.tsx index 0fca2ebc2..fc4542169 100644 --- a/front/src/modules/ui/table/editable-cell/type/components/GenericEditableRelationCellEditMode.tsx +++ b/front/src/modules/ui/table/editable-cell/type/components/GenericEditableRelationCellEditMode.tsx @@ -55,6 +55,7 @@ export function GenericEditableRelationCellEditMode({ viewField }: OwnProps) { onSubmit={handleEntitySubmit} onCancel={handleCancel} width={viewField.columnSize} + createModeEnabled /> ); }