Refactor hotkyes in its own lib folder (#660)

* Refactor hotkyes in its own lib folder

* Lint

* Fix PR comments

* rename hotkeysScope into hotkeyScope
This commit is contained in:
Charles Bochet
2023-07-14 12:27:26 -07:00
committed by GitHub
parent 7bcea343e2
commit e93a96b3b1
71 changed files with 398 additions and 386 deletions

View File

@ -1,6 +1,6 @@
import { ReactElement } from 'react';
import { HotkeysScope } from '@/hotkeys/types/internal/HotkeysScope';
import { HotkeyScope } from '@/lib/hotkeys/types/HotkeyScope';
import { RecoilScope } from '@/recoil-scope/components/RecoilScope';
import { BoardCardFieldContext } from '../states/BoardCardFieldContext';
@ -12,7 +12,7 @@ type OwnProps = {
nonEditModeContent: ReactElement;
editModeHorizontalAlign?: 'left' | 'right';
editModeVerticalPosition?: 'over' | 'below';
editHotkeysScope?: HotkeysScope;
editHotkeyScope?: HotkeyScope;
};
export function BoardCardEditableField(props: OwnProps) {

View File

@ -1,11 +1,12 @@
import { ReactElement, useRef } from 'react';
import styled from '@emotion/styled';
import { useScopedHotkeys } from '@/hotkeys/hooks/useScopedHotkeys';
import { InternalHotkeysScope } from '@/hotkeys/types/internal/InternalHotkeysScope';
import { useScopedHotkeys } from '@/lib/hotkeys/hooks/useScopedHotkeys';
import { useListenClickOutsideArrayOfRef } from '@/ui/hooks/useListenClickOutsideArrayOfRef';
import { overlayBackground } from '@/ui/themes/effects';
import { BoardCardFieldHotkeyScope } from '../types/BoardCardFieldHotkeyScope';
export const BoardCardFieldEditModeContainer = styled.div<
Omit<OwnProps, 'onExit'>
>`
@ -51,7 +52,7 @@ export function BoardCardEditableFieldEditMode({
() => {
onExit();
},
InternalHotkeysScope.BoardCardFieldEditMode,
BoardCardFieldHotkeyScope.BoardCardFieldEditMode,
[onExit],
);
@ -60,7 +61,7 @@ export function BoardCardEditableFieldEditMode({
() => {
onExit();
},
InternalHotkeysScope.BoardCardFieldEditMode,
BoardCardFieldHotkeyScope.BoardCardFieldEditMode,
[onExit],
);

View File

@ -1,11 +1,11 @@
import { ReactElement } from 'react';
import styled from '@emotion/styled';
import { usePreviousHotkeysScope } from '@/hotkeys/hooks/internal/usePreviousHotkeysScope';
import { HotkeysScope } from '@/hotkeys/types/internal/HotkeysScope';
import { InternalHotkeysScope } from '@/hotkeys/types/internal/InternalHotkeysScope';
import { usePreviousHotkeyScope } from '@/lib/hotkeys/hooks/usePreviousHotkeyScope';
import { HotkeyScope } from '@/lib/hotkeys/types/HotkeyScope';
import { useBoardCardField } from '../hooks/useBoardCardField';
import { BoardCardFieldHotkeyScope } from '../types/BoardCardFieldHotkeyScope';
import { BoardCardEditableFieldDisplayMode } from './BoardCardEditableFieldDisplayMode';
import { BoardCardEditableFieldEditMode } from './BoardCardEditableFieldEditMode';
@ -26,7 +26,7 @@ type OwnProps = {
nonEditModeContent: ReactElement;
editModeHorizontalAlign?: 'left' | 'right';
editModeVerticalPosition?: 'over' | 'below';
editHotkeysScope?: HotkeysScope;
editHotkeyScope?: HotkeyScope;
};
export function BoardCardEditableFieldInternal({
@ -34,7 +34,7 @@ export function BoardCardEditableFieldInternal({
editModeVerticalPosition = 'over',
editModeContent,
nonEditModeContent,
editHotkeysScope,
editHotkeyScope,
}: OwnProps) {
const { openBoardCardField, isBoardCardFieldInEditMode } =
useBoardCardField();
@ -42,22 +42,23 @@ export function BoardCardEditableFieldInternal({
const { closeBoardCardField } = useBoardCardField();
const {
goBackToPreviousHotkeysScope,
setHotkeysScopeAndMemorizePreviousScope,
} = usePreviousHotkeysScope();
goBackToPreviousHotkeyScope,
setHotkeyScopeAndMemorizePreviousScope,
} = usePreviousHotkeyScope();
function handleOnClick() {
if (!isBoardCardFieldInEditMode) {
openBoardCardField();
setHotkeysScopeAndMemorizePreviousScope(
editHotkeysScope?.scope ?? InternalHotkeysScope.BoardCardFieldEditMode,
editHotkeysScope?.customScopes ?? {},
setHotkeyScopeAndMemorizePreviousScope(
editHotkeyScope?.scope ??
BoardCardFieldHotkeyScope.BoardCardFieldEditMode,
editHotkeyScope?.customScopes ?? {},
);
}
}
function handleEditModeExit() {
goBackToPreviousHotkeysScope();
goBackToPreviousHotkeyScope();
closeBoardCardField();
}

View File

@ -0,0 +1,3 @@
export enum BoardCardFieldHotkeyScope {
BoardCardFieldEditMode = 'board-card-field-edit-mode',
}

View File

@ -1,7 +1,7 @@
import { ReactElement } from 'react';
import styled from '@emotion/styled';
import { HotkeysScope } from '@/hotkeys/types/internal/HotkeysScope';
import { HotkeyScope } from '@/lib/hotkeys/types/HotkeyScope';
import { useCurrentCellEditMode } from './hooks/useCurrentCellEditMode';
import { useIsSoftFocusOnCurrentCell } from './hooks/useIsSoftFocusOnCurrentCell';
@ -25,7 +25,7 @@ type OwnProps = {
nonEditModeContent: ReactElement;
editModeHorizontalAlign?: 'left' | 'right';
editModeVerticalPosition?: 'over' | 'below';
editHotkeysScope?: HotkeysScope;
editHotkeyScope?: HotkeyScope;
onSubmit?: () => void;
onCancel?: () => void;
};
@ -35,7 +35,7 @@ export function EditableCell({
editModeVerticalPosition = 'over',
editModeContent,
nonEditModeContent,
editHotkeysScope,
editHotkeyScope,
onSubmit,
onCancel,
}: OwnProps) {
@ -55,7 +55,7 @@ export function EditableCell({
{editModeContent}
</EditableCellEditMode>
) : hasSoftFocus ? (
<EditableCellSoftFocusMode editHotkeysScope={editHotkeysScope}>
<EditableCellSoftFocusMode editHotkeyScope={editHotkeyScope}>
{nonEditModeContent}
</EditableCellSoftFocusMode>
) : (

View File

@ -1,8 +1,8 @@
import React from 'react';
import { useScopedHotkeys } from '@/hotkeys/hooks/useScopedHotkeys';
import { HotkeysScope } from '@/hotkeys/types/internal/HotkeysScope';
import { InternalHotkeysScope } from '@/hotkeys/types/internal/InternalHotkeysScope';
import { useScopedHotkeys } from '@/lib/hotkeys/hooks/useScopedHotkeys';
import { HotkeyScope } from '@/lib/hotkeys/types/HotkeyScope';
import { TableHotkeyScope } from '@/ui/tables/types/TableHotkeyScope';
import { isNonTextWritingKey } from '@/utils/hotkeys/isNonTextWritingKey';
import { useEditableCell } from './hooks/useEditableCell';
@ -13,14 +13,14 @@ import {
export function EditableCellSoftFocusMode({
children,
editHotkeysScope,
}: React.PropsWithChildren<{ editHotkeysScope?: HotkeysScope }>) {
editHotkeyScope,
}: React.PropsWithChildren<{ editHotkeyScope?: HotkeyScope }>) {
const { openEditableCell } = useEditableCell();
function openEditMode() {
openEditableCell(
editHotkeysScope ?? {
scope: InternalHotkeysScope.CellEditMode,
editHotkeyScope ?? {
scope: TableHotkeyScope.CellEditMode,
},
);
}
@ -30,7 +30,7 @@ export function EditableCellSoftFocusMode({
() => {
openEditMode();
},
InternalHotkeysScope.TableSoftFocus,
TableHotkeyScope.TableSoftFocus,
[openEditMode],
);
@ -48,7 +48,7 @@ export function EditableCellSoftFocusMode({
openEditMode();
},
InternalHotkeysScope.TableSoftFocus,
TableHotkeyScope.TableSoftFocus,
[openEditMode],
{
preventDefault: false,

View File

@ -1,28 +1,28 @@
import { useRecoilCallback } from 'recoil';
import { useSetHotkeysScope } from '@/hotkeys/hooks/useSetHotkeysScope';
import { HotkeysScope } from '@/hotkeys/types/internal/HotkeysScope';
import { InternalHotkeysScope } from '@/hotkeys/types/internal/InternalHotkeysScope';
import { useSetHotkeyScope } from '@/lib/hotkeys/hooks/useSetHotkeyScope';
import { HotkeyScope } from '@/lib/hotkeys/types/HotkeyScope';
import { useCloseCurrentCellInEditMode } from '@/ui/tables/hooks/useClearCellInEditMode';
import { isSomeInputInEditModeState } from '@/ui/tables/states/isSomeInputInEditModeState';
import { TableHotkeyScope } from '@/ui/tables/types/TableHotkeyScope';
import { useCurrentCellEditMode } from './useCurrentCellEditMode';
export function useEditableCell() {
const { setCurrentCellInEditMode } = useCurrentCellEditMode();
const setHotkeysScope = useSetHotkeysScope();
const setHotkeyScope = useSetHotkeyScope();
const closeCurrentCellInEditMode = useCloseCurrentCellInEditMode();
function closeEditableCell() {
closeCurrentCellInEditMode();
setHotkeysScope(InternalHotkeysScope.TableSoftFocus);
setHotkeyScope(TableHotkeyScope.TableSoftFocus);
}
const openEditableCell = useRecoilCallback(
({ snapshot, set }) =>
(hotkeysScope: HotkeysScope) => {
(HotkeyScope: HotkeyScope) => {
const isSomeInputInEditMode = snapshot
.getLoadable(isSomeInputInEditModeState)
.valueOrThrow();
@ -32,10 +32,10 @@ export function useEditableCell() {
setCurrentCellInEditMode();
setHotkeysScope(hotkeysScope.scope);
setHotkeyScope(HotkeyScope.scope);
}
},
[setCurrentCellInEditMode, setHotkeysScope],
[setCurrentCellInEditMode, setHotkeyScope],
);
return {

View File

@ -1,7 +1,7 @@
import { useScopedHotkeys } from '@/hotkeys/hooks/useScopedHotkeys';
import { InternalHotkeysScope } from '@/hotkeys/types/internal/InternalHotkeysScope';
import { useScopedHotkeys } from '@/lib/hotkeys/hooks/useScopedHotkeys';
import { useListenClickOutsideArrayOfRef } from '@/ui/hooks/useListenClickOutsideArrayOfRef';
import { useMoveSoftFocus } from '@/ui/tables/hooks/useMoveSoftFocus';
import { TableHotkeyScope } from '@/ui/tables/types/TableHotkeyScope';
import { useCurrentCellEditMode } from './useCurrentCellEditMode';
import { useEditableCell } from './useEditableCell';
@ -28,7 +28,7 @@ export function useRegisterCloseCellHandlers(
closeEditableCell();
moveDown();
},
InternalHotkeysScope.CellEditMode,
TableHotkeyScope.CellEditMode,
[closeEditableCell, onSubmit, moveDown],
);
@ -38,7 +38,7 @@ export function useRegisterCloseCellHandlers(
closeEditableCell();
onCancel?.();
},
InternalHotkeysScope.CellEditMode,
TableHotkeyScope.CellEditMode,
[closeEditableCell, onCancel],
);
@ -49,7 +49,7 @@ export function useRegisterCloseCellHandlers(
closeEditableCell();
moveRight();
},
InternalHotkeysScope.CellEditMode,
TableHotkeyScope.CellEditMode,
[closeEditableCell, onSubmit, moveRight],
);
@ -60,7 +60,7 @@ export function useRegisterCloseCellHandlers(
closeEditableCell();
moveLeft();
},
InternalHotkeysScope.CellEditMode,
TableHotkeyScope.CellEditMode,
[closeEditableCell, onSubmit, moveRight],
);
}

View File

@ -1,8 +1,7 @@
import { useMemo } from 'react';
import { useRecoilCallback } from 'recoil';
import { useSetHotkeysScope } from '@/hotkeys/hooks/useSetHotkeysScope';
import { InternalHotkeysScope } from '@/hotkeys/types/internal/InternalHotkeysScope';
import { useSetHotkeyScope } from '@/lib/hotkeys/hooks/useSetHotkeyScope';
import { useRecoilScopedState } from '@/recoil-scope/hooks/useRecoilScopedState';
import { useSetSoftFocusPosition } from '@/ui/tables/hooks/useSetSoftFocusPosition';
import { CellContext } from '@/ui/tables/states/CellContext';
@ -11,6 +10,7 @@ import { currentRowNumberScopedState } from '@/ui/tables/states/currentRowNumber
import { isSoftFocusActiveState } from '@/ui/tables/states/isSoftFocusActiveState';
import { RowContext } from '@/ui/tables/states/RowContext';
import { CellPosition } from '@/ui/tables/types/CellPosition';
import { TableHotkeyScope } from '@/ui/tables/types/TableHotkeyScope';
export function useSetSoftFocusOnCurrentCell() {
const setSoftFocusPosition = useSetSoftFocusPosition();
@ -33,7 +33,7 @@ export function useSetSoftFocusOnCurrentCell() {
[currentColumnNumber, currentRowNumber],
);
const setHotkeysScope = useSetHotkeysScope();
const setHotkeyScope = useSetHotkeyScope();
return useRecoilCallback(
({ set }) =>
@ -42,8 +42,8 @@ export function useSetSoftFocusOnCurrentCell() {
set(isSoftFocusActiveState, true);
setHotkeysScope(InternalHotkeysScope.TableSoftFocus);
setHotkeyScope(TableHotkeyScope.TableSoftFocus);
},
[setHotkeysScope, currentTablePosition, setSoftFocusPosition],
[setHotkeyScope, currentTablePosition, setSoftFocusPosition],
);
}

View File

@ -1,5 +1,5 @@
import { InternalHotkeysScope } from '@/hotkeys/types/internal/InternalHotkeysScope';
import { InplaceInputDateDisplayMode } from '@/ui/inplace-inputs/components/InplaceInputDateDisplayMode';
import { TableHotkeyScope } from '@/ui/tables/types/TableHotkeyScope';
import { EditableCell } from '../EditableCell';
@ -23,7 +23,7 @@ export function EditableCellDate({
<EditableCellDateEditMode onChange={onChange} value={value} />
}
nonEditModeContent={<InplaceInputDateDisplayMode value={value} />}
editHotkeysScope={{ scope: InternalHotkeysScope.CellDateEditMode }}
editHotkeyScope={{ scope: TableHotkeyScope.CellDateEditMode }}
></EditableCell>
);
}

View File

@ -1,8 +1,8 @@
import { Key } from 'ts-key-enum';
import { useScopedHotkeys } from '@/hotkeys/hooks/useScopedHotkeys';
import { InternalHotkeysScope } from '@/hotkeys/types/internal/InternalHotkeysScope';
import { useScopedHotkeys } from '@/lib/hotkeys/hooks/useScopedHotkeys';
import { InplaceInputDateEditMode } from '@/ui/inplace-inputs/components/InplaceInputDateEditMode';
import { TableHotkeyScope } from '@/ui/tables/types/TableHotkeyScope';
import { useEditableCell } from '../hooks/useEditableCell';
@ -27,7 +27,7 @@ export function EditableCellDateEditMode({
() => {
closeEditableCell();
},
InternalHotkeysScope.CellDateEditMode,
TableHotkeyScope.CellDateEditMode,
[closeEditableCell],
);

View File

@ -1,6 +1,6 @@
import { ReactElement, useEffect, useState } from 'react';
import { InternalHotkeysScope } from '@/hotkeys/types/internal/InternalHotkeysScope';
import { TableHotkeyScope } from '@/ui/tables/types/TableHotkeyScope';
import { CellSkeleton } from '../CellSkeleton';
import { EditableCell } from '../EditableCell';
@ -46,7 +46,7 @@ export function EditableCellDoubleText({
return (
<EditableCell
editHotkeysScope={{ scope: InternalHotkeysScope.CellDoubleTextInput }}
editHotkeyScope={{ scope: TableHotkeyScope.CellDoubleTextInput }}
editModeContent={
<EditableCellDoubleTextEditMode
firstValue={firstInternalValue}

View File

@ -2,10 +2,10 @@ import { ChangeEvent, useRef, useState } from 'react';
import styled from '@emotion/styled';
import { Key } from 'ts-key-enum';
import { useScopedHotkeys } from '@/hotkeys/hooks/useScopedHotkeys';
import { InternalHotkeysScope } from '@/hotkeys/types/internal/InternalHotkeysScope';
import { useScopedHotkeys } from '@/lib/hotkeys/hooks/useScopedHotkeys';
import { InplaceInputTextEditMode } from '@/ui/inplace-inputs/components/InplaceInputTextEditMode';
import { useMoveSoftFocus } from '@/ui/tables/hooks/useMoveSoftFocus';
import { TableHotkeyScope } from '@/ui/tables/types/TableHotkeyScope';
import { useEditableCell } from '../hooks/useEditableCell';
@ -59,7 +59,7 @@ export function EditableCellDoubleTextEditMode({
moveDown();
onSubmit?.();
},
InternalHotkeysScope.CellDoubleTextInput,
TableHotkeyScope.CellDoubleTextInput,
[closeCell],
);
@ -69,7 +69,7 @@ export function EditableCellDoubleTextEditMode({
onCancel?.();
closeCell();
},
InternalHotkeysScope.CellDoubleTextInput,
TableHotkeyScope.CellDoubleTextInput,
[closeCell],
);
@ -85,7 +85,7 @@ export function EditableCellDoubleTextEditMode({
moveRight();
}
},
InternalHotkeysScope.CellDoubleTextInput,
TableHotkeyScope.CellDoubleTextInput,
[closeCell, moveRight, focusPosition],
);
@ -101,7 +101,7 @@ export function EditableCellDoubleTextEditMode({
moveLeft();
}
},
InternalHotkeysScope.CellDoubleTextInput,
TableHotkeyScope.CellDoubleTextInput,
[closeCell, moveRight, focusPosition],
);

View File

@ -10,11 +10,12 @@ import styled from '@emotion/styled';
import { IconAlertCircle } from '@tabler/icons-react';
import { Key } from 'ts-key-enum';
import { usePreviousHotkeysScope } from '@/hotkeys/hooks/internal/usePreviousHotkeysScope';
import { useScopedHotkeys } from '@/hotkeys/hooks/useScopedHotkeys';
import { InternalHotkeysScope } from '@/hotkeys/types/internal/InternalHotkeysScope';
import { usePreviousHotkeyScope } from '@/lib/hotkeys/hooks/usePreviousHotkeyScope';
import { useScopedHotkeys } from '@/lib/hotkeys/hooks/useScopedHotkeys';
import { IconEye, IconEyeOff } from '@/ui/icons/index';
import { InputHotkeyScope } from './types/InputHotkeyScope';
type OwnProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'onChange'> & {
label?: string;
onChange?: (text: string) => void;
@ -110,18 +111,18 @@ export function TextInput({
const inputRef = useRef<HTMLInputElement>(null);
const {
goBackToPreviousHotkeysScope,
setHotkeysScopeAndMemorizePreviousScope,
} = usePreviousHotkeysScope();
goBackToPreviousHotkeyScope,
setHotkeyScopeAndMemorizePreviousScope,
} = usePreviousHotkeyScope();
const handleFocus: FocusEventHandler<HTMLInputElement> = (e) => {
onFocus?.(e);
setHotkeysScopeAndMemorizePreviousScope(InternalHotkeysScope.TextInput);
setHotkeyScopeAndMemorizePreviousScope(InputHotkeyScope.TextInput);
};
const handleBlur: FocusEventHandler<HTMLInputElement> = (e) => {
onBlur?.(e);
goBackToPreviousHotkeysScope();
goBackToPreviousHotkeyScope();
};
useScopedHotkeys(
@ -129,7 +130,7 @@ export function TextInput({
() => {
inputRef.current?.blur();
},
InternalHotkeysScope.TextInput,
InputHotkeyScope.TextInput,
);
const [passwordVisible, setPasswordVisible] = useState(false);

View File

@ -0,0 +1,3 @@
export enum InputHotkeyScope {
TextInput = 'text-input',
}

View File

@ -1,7 +1,6 @@
import { ReactNode, useCallback, useState } from 'react';
import styled from '@emotion/styled';
import { InternalHotkeysScope } from '@/hotkeys/types/internal/InternalHotkeysScope';
import { FilterDropdownButton } from '@/lib/filters-and-sorts/components/FilterDropdownButton';
import SortAndFilterBar from '@/lib/filters-and-sorts/components/SortAndFilterBar';
import { SortDropdownButton } from '@/lib/filters-and-sorts/components/SortDropdownButton';
@ -9,6 +8,7 @@ import {
SelectedSortType,
SortType,
} from '@/lib/filters-and-sorts/interfaces/sorts/interface';
import { FiltersHotkeyScope } from '@/lib/filters-and-sorts/types/FiltersHotkeyScope';
import { TableContext } from '@/ui/tables/states/TableContext';
type OwnProps<SortField> = {
@ -93,13 +93,13 @@ export function TableHeader<SortField>({
<StyledFilters>
<FilterDropdownButton
context={TableContext}
hotkeysScope={InternalHotkeysScope.TableHeaderDropdownButton}
HotkeyScope={FiltersHotkeyScope.FilterDropdownButton}
/>
<SortDropdownButton<SortField>
isSortSelected={sorts.length > 0}
availableSorts={availableSorts || []}
onSortSelect={sortSelect}
hotkeysScope={InternalHotkeysScope.TableHeaderDropdownButton}
HotkeyScope={FiltersHotkeyScope.FilterDropdownButton}
/>
</StyledFilters>
</StyledTableHeader>

View File

@ -0,0 +1,3 @@
export enum RightDrawerHotkeyScope {
RightDrawer = 'right-drawer',
}

View File

@ -1,17 +1,14 @@
import { useScopedHotkeys } from '@/hotkeys/hooks/useScopedHotkeys';
import { InternalHotkeysScope } from '@/hotkeys/types/internal/InternalHotkeysScope';
import { useScopedHotkeys } from '@/lib/hotkeys/hooks/useScopedHotkeys';
import { TableHotkeyScope } from '@/ui/tables/types/TableHotkeyScope';
type OwnProps = {
onAddButtonClick?: () => void;
};
export function TopBarHotkeys({ onAddButtonClick }: OwnProps) {
useScopedHotkeys(
'c',
() => onAddButtonClick?.(),
InternalHotkeysScope.Table,
[onAddButtonClick],
);
useScopedHotkeys('c', () => onAddButtonClick?.(), TableHotkeyScope.Table, [
onAddButtonClick,
]);
return <></>;
}

View File

@ -1,11 +1,11 @@
import { useRecoilCallback } from 'recoil';
import { useSetHotkeysScope } from '@/hotkeys/hooks/useSetHotkeysScope';
import { currentHotkeysScopeState } from '@/hotkeys/states/internal/currentHotkeysScopeState';
import { InternalHotkeysScope } from '@/hotkeys/types/internal/InternalHotkeysScope';
import { useSetHotkeyScope } from '@/lib/hotkeys/hooks/useSetHotkeyScope';
import { currentHotkeyScopeState } from '@/lib/hotkeys/states/internal/currentHotkeyScopeState';
import { isSoftFocusActiveState } from '../states/isSoftFocusActiveState';
import { isSomeInputInEditModeState } from '../states/isSomeInputInEditModeState';
import { TableHotkeyScope } from '../types/TableHotkeyScope';
import { useCloseCurrentCellInEditMode } from './useClearCellInEditMode';
import { useDisableSoftFocus } from './useDisableSoftFocus';
@ -14,7 +14,7 @@ export function useLeaveTableFocus() {
const disableSoftFocus = useDisableSoftFocus();
const closeCurrentCellInEditMode = useCloseCurrentCellInEditMode();
const setHotkeysScope = useSetHotkeysScope();
const setHotkeyScope = useSetHotkeyScope();
return useRecoilCallback(
({ snapshot }) =>
@ -27,8 +27,8 @@ export function useLeaveTableFocus() {
.getLoadable(isSomeInputInEditModeState)
.valueOrThrow();
const currentHotkeysScope = snapshot
.getLoadable(currentHotkeysScopeState)
const currentHotkeyScope = snapshot
.getLoadable(currentHotkeyScopeState)
.valueOrThrow();
if (isSomeInputInEditMode) {
@ -39,15 +39,15 @@ export function useLeaveTableFocus() {
return;
}
if (currentHotkeysScope?.scope === InternalHotkeysScope.Table) {
if (currentHotkeyScope?.scope === TableHotkeyScope.Table) {
return;
}
closeCurrentCellInEditMode();
disableSoftFocus();
setHotkeysScope(InternalHotkeysScope.Table, { goto: true });
setHotkeyScope(TableHotkeyScope.Table, { goto: true });
},
[setHotkeysScope, closeCurrentCellInEditMode, disableSoftFocus],
[setHotkeyScope, closeCurrentCellInEditMode, disableSoftFocus],
);
}

View File

@ -1,11 +1,11 @@
import { useRecoilState } from 'recoil';
import { Key } from 'ts-key-enum';
import { useScopedHotkeys } from '@/hotkeys/hooks/useScopedHotkeys';
import { useSetHotkeysScope } from '@/hotkeys/hooks/useSetHotkeysScope';
import { InternalHotkeysScope } from '@/hotkeys/types/internal/InternalHotkeysScope';
import { useScopedHotkeys } from '@/lib/hotkeys/hooks/useScopedHotkeys';
import { useSetHotkeyScope } from '@/lib/hotkeys/hooks/useSetHotkeyScope';
import { isSomeInputInEditModeState } from '../states/isSomeInputInEditModeState';
import { TableHotkeyScope } from '../types/TableHotkeyScope';
import { useDisableSoftFocus } from './useDisableSoftFocus';
import { useMoveSoftFocus } from './useMoveSoftFocus';
@ -14,7 +14,7 @@ export function useMapKeyboardToSoftFocus() {
const { moveDown, moveLeft, moveRight, moveUp } = useMoveSoftFocus();
const disableSoftFocus = useDisableSoftFocus();
const setHotkeysScope = useSetHotkeysScope();
const setHotkeyScope = useSetHotkeyScope();
const [isSomeInputInEditMode] = useRecoilState(isSomeInputInEditModeState);
@ -25,7 +25,7 @@ export function useMapKeyboardToSoftFocus() {
moveUp();
}
},
InternalHotkeysScope.TableSoftFocus,
TableHotkeyScope.TableSoftFocus,
[moveUp, isSomeInputInEditMode],
);
@ -36,7 +36,7 @@ export function useMapKeyboardToSoftFocus() {
moveDown();
}
},
InternalHotkeysScope.TableSoftFocus,
TableHotkeyScope.TableSoftFocus,
[moveDown, isSomeInputInEditMode],
);
@ -47,7 +47,7 @@ export function useMapKeyboardToSoftFocus() {
moveLeft();
}
},
InternalHotkeysScope.TableSoftFocus,
TableHotkeyScope.TableSoftFocus,
[moveLeft, isSomeInputInEditMode],
);
@ -58,17 +58,17 @@ export function useMapKeyboardToSoftFocus() {
moveRight();
}
},
InternalHotkeysScope.TableSoftFocus,
TableHotkeyScope.TableSoftFocus,
[moveRight, isSomeInputInEditMode],
);
useScopedHotkeys(
[Key.Escape],
() => {
setHotkeysScope(InternalHotkeysScope.Table, { goto: true });
setHotkeyScope(TableHotkeyScope.Table, { goto: true });
disableSoftFocus();
},
InternalHotkeysScope.TableSoftFocus,
TableHotkeyScope.TableSoftFocus,
[disableSoftFocus],
);
}

View File

@ -0,0 +1,7 @@
export enum TableHotkeyScope {
CellDoubleTextInput = 'cell-double-text-input',
CellEditMode = 'cell-edit-mode',
CellDateEditMode = 'cell-date-edit-mode',
TableSoftFocus = 'table-soft-focus',
Table = 'table',
}