UNPKG

@lyra/form-builder

Version:
49 lines (43 loc) 1.44 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = ListItemOnTabKeyPlugin; var _slate = require('slate'); // This plugin handles tab key when focus is on list element, and changes the level on it /*:: type Options = {}*/ function ListItemOnTabKeyPlugin(options /*: Options*/ = {}) { return { // eslint-disable-next-line complexity onKeyDown(event /*: SyntheticKeyboardEvent<*>*/, change /*: Change*/) { const key = event.key, shiftKey = event.shiftKey, altKey = event.altKey; if (key !== 'Tab') { return undefined; } if (altKey) { return undefined; } const value = change.value; const listBlocks = value.blocks.filter(block => block.data.get('listItem')); if (listBlocks.size === 0) { return undefined; } event.preventDefault(); listBlocks.forEach(listNode => { const listItemData = listNode.data.toObject(); listItemData.level = listItemData.level || 1; if (shiftKey) { listItemData.level--; listItemData.level = listItemData.level || 1; // Min level 1 } else { listItemData.level++; listItemData.level = listItemData.level < 11 ? listItemData.level : 10; // Max level 10 } change.setNodeByKey(listNode.key, { data: listItemData }); }); return change; } }; }