UNPKG

@testing-library/user-event

Version:
59 lines (56 loc) 2.33 kB
'use strict'; var index = require('../index.js'); require('../../utils/click/isClickableInput.js'); require('../../utils/dataTransfer/Clipboard.js'); var isContentEditable = require('../../utils/edit/isContentEditable.js'); var input = require('../../utils/edit/input.js'); var isEditable = require('../../utils/edit/isEditable.js'); require('@testing-library/dom'); var isElementType = require('../../utils/misc/isElementType.js'); require('@testing-library/dom/dist/helpers.js'); require('../../utils/keyDef/readNextDescriptor.js'); require('../../utils/misc/level.js'); require('../../options.js'); var registry = require('./registry.js'); registry.behavior.keypress = (event, target, config)=>{ if (event.key === 'Enter') { if (isElementType.isElementType(target, 'button') || isElementType.isElementType(target, 'input') && ClickInputOnEnter.includes(target.type) || isElementType.isElementType(target, 'a') && Boolean(target.href)) { return ()=>{ index.dispatchUIEvent(config, target, 'click'); }; } else if (isElementType.isElementType(target, 'input')) { const form = target.form; const submit = form === null || form === void 0 ? void 0 : form.querySelector('input[type="submit"], button:not([type]), button[type="submit"]'); if (submit) { return ()=>index.dispatchUIEvent(config, submit, 'click'); } else if (form && SubmitSingleInputOnEnter.includes(target.type) && form.querySelectorAll('input').length === 1) { return ()=>index.dispatchUIEvent(config, form, 'submit'); } else { return; } } } if (isEditable.isEditable(target)) { const inputType = event.key === 'Enter' ? isContentEditable.isContentEditable(target) && !config.system.keyboard.modifiers.Shift ? 'insertParagraph' : 'insertLineBreak' : 'insertText'; const inputData = event.key === 'Enter' ? '\n' : event.key; return ()=>input.input(config, target, inputData, inputType); } }; const ClickInputOnEnter = [ 'button', 'color', 'file', 'image', 'reset', 'submit', ]; const SubmitSingleInputOnEnter = [ 'email', 'month', 'password', 'search', 'tel', 'text', 'url', 'week', ];