UNPKG

handsontable

Version:

Handsontable is a JavaScript Data Grid available for React, Angular and Vue.

104 lines (103 loc) 2.98 kB
"use strict"; exports.__esModule = true; exports.createDefaultShortcutsList = createDefaultShortcutsList; /** * Creates a keyboard shortcuts list with default keyboards binds. * * @param {Menu} menu The main menu instance. * @returns {KeyboardShortcut[]} */ function createDefaultShortcutsList(menu) { const { hot, hotMenu } = menu; return [{ keys: [['Control/Meta', 'A']], forwardToContext: hot.getShortcutManager().getContext('grid'), callback: () => menu.close(true) }, { keys: [['Tab'], ['Shift', 'Tab']], callback: (event, keys) => { const settings = hot.getSettings(); const tabMoves = typeof settings.tabMoves === 'function' ? settings.tabMoves(event) : settings.tabMoves; if (keys.includes('shift')) { hot.selection.transformStart(-tabMoves.row, -tabMoves.col); } else { hot.selection.transformStart(tabMoves.row, tabMoves.col); } menu.close(true); } }, { keys: [['Escape']], callback: () => menu.close() }, { keys: [['ArrowDown']], callback: () => menu.getNavigator().toNextItem() }, { keys: [['ArrowUp']], callback: () => menu.getNavigator().toPreviousItem() }, { keys: [[hot.isRtl() ? 'ArrowLeft' : 'ArrowRight']], callback: () => { const selection = hotMenu.getSelectedActive(); if (selection) { const subMenu = menu.openSubMenu(selection[0]); if (subMenu) { subMenu.getNavigator().toFirstItem(); } } } }, { keys: [[hot.isRtl() ? 'ArrowRight' : 'ArrowLeft']], callback: () => { const selection = hotMenu.getSelectedActive(); if (selection && menu.isSubMenu()) { menu.close(); if (menu.isSubMenu()) { menu.parentMenu.hotMenu.listen(); } } } }, { keys: [['Control/Meta', 'ArrowUp'], ['Home']], callback: () => menu.getNavigator().toFirstItem() }, { keys: [['Control/Meta', 'ArrowDown'], ['End']], callback: () => menu.getNavigator().toLastItem() }, { keys: [['Enter'], ['Space']], callback: event => { const selection = hotMenu.getSelectedActive(); if (!selection) { return; } if (hotMenu.getSourceDataAtRow(selection[0]).submenu) { menu.openSubMenu(selection[0]).getNavigator().toFirstItem(); } else { menu.executeCommand(event); menu.close(true); } } }, { keys: [['PageUp']], callback: () => { const selection = hotMenu.getSelectedActive(); if (selection) { hotMenu.selection.transformStart(-hotMenu.countVisibleRows(), 0); } else { menu.getNavigator().toFirstItem(); } } }, { keys: [['PageDown']], callback: () => { const selection = hotMenu.getSelectedActive(); if (selection) { hotMenu.selection.transformStart(hotMenu.countVisibleRows(), 0); } else { menu.getNavigator().toLastItem(); } } }]; }