@testing-library/user-event
Version:
Fire events the same way the user does
59 lines (56 loc) • 2.33 kB
JavaScript
;
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',
];