Feat/improve editable cell (#959)

* Removed isSomeInputInEditMode

* Removed console.log

* Added a first version of generic cell text

* Removed metadata from entity table  V1

* Fix

* Fix

* Fix
This commit is contained in:
Lucas Bordeau
2023-07-27 07:53:57 +02:00
committed by GitHub
parent 13f415a859
commit 011d9e840f
27 changed files with 705 additions and 92 deletions

View File

@ -0,0 +1,6 @@
import { createContext } from 'react';
import { EntityFieldMetadata } from '../types/EntityFieldMetadata';
export const EntityFieldMetadataContext =
createContext<EntityFieldMetadata | null>(null);

View File

@ -0,0 +1,6 @@
import { createContext } from 'react';
import { EntityUpdateFieldHook } from '../types/CellUpdateFieldHook';
export const EntityUpdateFieldHookContext =
createContext<EntityUpdateFieldHook | null>(null);

View File

@ -0,0 +1,8 @@
import { atom } from 'recoil';
import { EntityFieldMetadata } from '../types/EntityFieldMetadata';
export const entityFieldMetadataArrayState = atom<EntityFieldMetadata[]>({
key: 'entityFieldMetadataArrayState',
default: [],
});

View File

@ -1,6 +0,0 @@
import { atom } from 'recoil';
export const isSomeInputInEditModeState = atom<boolean>({
key: 'isSomeInputInEditModeState',
default: false,
});

View File

@ -0,0 +1,9 @@
import { atomFamily } from 'recoil';
export const tableEntitiesFamilyState = atomFamily<
Record<string, unknown> | null,
string
>({
key: 'tableEntitiesFamilyState',
default: null,
});

View File

@ -0,0 +1,18 @@
import { selectorFamily } from 'recoil';
import { tableEntitiesFamilyState } from './tableEntitiesFamilyState';
export const tableEntityFieldFamilySelector = selectorFamily({
key: 'tableEntityFieldFamilySelector',
get:
<T>({ fieldName, entityId }: { fieldName: string; entityId: string }) =>
({ get }) =>
get(tableEntitiesFamilyState(entityId))?.[fieldName] as T,
set:
<T>({ fieldName, entityId }: { fieldName: string; entityId: string }) =>
({ set }, newValue: T) =>
set(tableEntitiesFamilyState(entityId), (prevState) => ({
...prevState,
[fieldName]: newValue,
})),
});