Files
twenty_crm/front/src/modules/ui/components/editable-cell/EditableCellSoftFocusMode.tsx
Charles Bochet 611cda1f41 Revert "Refacto/abstract inplace input" (#535)
Revert "Refacto/abstract inplace input (#530)"

This reverts commit c847bca293.
2023-07-07 18:10:51 -07:00

58 lines
1.4 KiB
TypeScript

import React from 'react';
import { useHotkeys } from 'react-hotkeys-hook';
import { useRecoilState } from 'recoil';
import { captureHotkeyTypeInFocusState } from '@/hotkeys/states/captureHotkeyTypeInFocusState';
import { isNonTextWritingKey } from '@/utils/hotkeys/isNonTextWritingKey';
import { useEditableCell } from './hooks/useCloseEditableCell';
import { EditableCellDisplayMode } from './EditableCellDisplayMode';
export function EditableCellSoftFocusMode({
children,
}: React.PropsWithChildren<unknown>) {
const { closeEditableCell, openEditableCell } = useEditableCell();
const [captureHotkeyTypeInFocus] = useRecoilState(
captureHotkeyTypeInFocusState,
);
useHotkeys(
'enter',
() => {
openEditableCell();
},
{
enableOnContentEditable: true,
enableOnFormTags: true,
preventDefault: true,
},
[closeEditableCell],
);
useHotkeys(
'*',
(keyboardEvent) => {
const isWritingText =
!isNonTextWritingKey(keyboardEvent.key) &&
!keyboardEvent.ctrlKey &&
!keyboardEvent.metaKey;
if (!isWritingText) {
return;
}
if (captureHotkeyTypeInFocus) {
return;
}
openEditableCell();
},
{
enableOnContentEditable: true,
enableOnFormTags: true,
preventDefault: false,
},
);
return <EditableCellDisplayMode>{children}</EditableCellDisplayMode>;
}