@portabletext/keyboard-shortcuts
Version:
Create platform-aware keyboard shortcuts with automatic detection of Apple vs non-Apple platforms
120 lines (113 loc) • 2.33 kB
text/typescript
import {describe, expect, test} from 'vitest'
import {isKeyboardShortcut} from './is-keyboard-shortcut'
describe(isKeyboardShortcut.name, () => {
test('Enter with no shift matching Enter', () => {
expect(
isKeyboardShortcut(
{
key: 'Enter',
shift: false,
},
{
key: 'Enter',
code: 'Enter',
metaKey: false,
ctrlKey: false,
altKey: false,
shiftKey: false,
},
),
).toBe(true)
})
test('Enter with no shift matching the same', () => {
expect(
isKeyboardShortcut(
{
key: 'Enter',
shift: false,
},
{
key: 'Enter',
code: 'Enter',
metaKey: false,
ctrlKey: false,
altKey: false,
shiftKey: true,
},
),
).toBe(false)
})
test('Enter with required shift', () => {
expect(
isKeyboardShortcut(
{
key: 'Enter',
shift: true,
},
{
key: 'Enter',
code: 'Enter',
metaKey: false,
ctrlKey: false,
altKey: false,
shiftKey: true,
},
),
).toBe(true)
})
test('Enter with optional modifiers', () => {
expect(
isKeyboardShortcut(
{
key: 'Enter',
},
{
key: 'Enter',
code: 'Enter',
metaKey: false,
ctrlKey: false,
altKey: false,
shiftKey: true,
},
),
).toBe(true)
})
test('bold shortcut on a non-Apple platform', () => {
expect(
isKeyboardShortcut(
{
key: 'B',
ctrl: true,
meta: false,
},
{
key: 'b',
code: 'KeyB',
metaKey: false,
ctrlKey: true,
altKey: false,
shiftKey: false,
},
),
).toBe(true)
})
test('bold shortcut on an Apple platform', () => {
expect(
isKeyboardShortcut(
{
key: 'B',
ctrl: false,
meta: true,
},
{
key: 'b',
code: 'KeyB',
metaKey: false,
ctrlKey: true,
altKey: false,
shiftKey: false,
},
),
).toBe(false)
})
})