a2ccb643ff
* wip * wip * Ok * Deleted unused code * Fixed lint * Minor fixes * Minor fixes * Minor Fixes * Minor merge fixes * Ok * Fix storybook tests * Removed console.log * Fix login * asd * Fixed storybook * Added await * Fixed await * Added sleep for failing test * Fix sleep * Fix test * Fix tests --------- Co-authored-by: Charles Bochet <charles@twenty.com>
65 lines
1.9 KiB
TypeScript
65 lines
1.9 KiB
TypeScript
import { useContext } from 'react';
|
|
import { useRecoilCallback } from 'recoil';
|
|
|
|
import { useSetHotkeyScope } from '@/ui/hotkey/hooks/useSetHotkeyScope';
|
|
import { HotkeyScope } from '@/ui/hotkey/types/HotkeyScope';
|
|
|
|
import { useCloseCurrentCellInEditMode } from '../../hooks/useClearCellInEditMode';
|
|
import { CellHotkeyScopeContext } from '../../states/CellHotkeyScopeContext';
|
|
import { isSomeInputInEditModeState } from '../../states/isSomeInputInEditModeState';
|
|
import { TableHotkeyScope } from '../../types/TableHotkeyScope';
|
|
|
|
import { useCurrentCellEditMode } from './useCurrentCellEditMode';
|
|
|
|
const DEFAULT_CELL_SCOPE: HotkeyScope = {
|
|
scope: TableHotkeyScope.CellEditMode,
|
|
};
|
|
|
|
export function useEditableCell() {
|
|
const { setCurrentCellInEditMode } = useCurrentCellEditMode();
|
|
|
|
const setHotkeyScope = useSetHotkeyScope();
|
|
|
|
const closeCurrentCellInEditMode = useCloseCurrentCellInEditMode();
|
|
|
|
const customCellHotkeyScope = useContext(CellHotkeyScopeContext);
|
|
|
|
function closeEditableCell() {
|
|
closeCurrentCellInEditMode();
|
|
setHotkeyScope(TableHotkeyScope.TableSoftFocus);
|
|
}
|
|
|
|
const openEditableCell = useRecoilCallback(
|
|
({ snapshot, set }) =>
|
|
() => {
|
|
const isSomeInputInEditMode = snapshot
|
|
.getLoadable(isSomeInputInEditModeState)
|
|
.valueOrThrow();
|
|
|
|
if (!isSomeInputInEditMode) {
|
|
set(isSomeInputInEditModeState, true);
|
|
|
|
setCurrentCellInEditMode();
|
|
|
|
if (customCellHotkeyScope) {
|
|
setHotkeyScope(
|
|
customCellHotkeyScope.scope,
|
|
customCellHotkeyScope.customScopes,
|
|
);
|
|
} else {
|
|
setHotkeyScope(
|
|
DEFAULT_CELL_SCOPE.scope,
|
|
DEFAULT_CELL_SCOPE.customScopes,
|
|
);
|
|
}
|
|
}
|
|
},
|
|
[setCurrentCellInEditMode, setHotkeyScope, customCellHotkeyScope],
|
|
);
|
|
|
|
return {
|
|
closeEditableCell,
|
|
openEditableCell,
|
|
};
|
|
}
|