UNPKG

@testing-library/user-event

Version:
43 lines (40 loc) 1.7 kB
'use strict'; require('../../utils/click/isClickableInput.js'); require('../../utils/dataTransfer/Clipboard.js'); require('../eventMap.js'); var dispatchEvent = require('../dispatchEvent.js'); require('../../utils/edit/maxLength.js'); require('../../utils/edit/isEditable.js'); var focus = require('../../utils/focus/focus.js'); var getWindow = require('../../utils/misc/getWindow.js'); var isElementType = require('../../utils/misc/isElementType.js'); var blur = require('../../utils/focus/blur.js'); var isFocusable = require('../../utils/focus/isFocusable.js'); require('../../utils/keyDef/readNextDescriptor.js'); var cloneEvent = require('../../utils/misc/cloneEvent.js'); require('@testing-library/dom'); require('../../utils/misc/level.js'); require('../../options.js'); var registry = require('./registry.js'); registry.behavior.click = (event, target, config)=>{ const context = target.closest('button,input,label,select,textarea'); const control = context && isElementType.isElementType(context, 'label') && context.control; if (control) { return ()=>{ if (isFocusable.isFocusable(control)) { focus.focus(control); } dispatchEvent.dispatchEvent(config, control, cloneEvent.cloneEvent(event)); }; } else if (isElementType.isElementType(target, 'input', { type: 'file' })) { return ()=>{ // blur fires when the file selector pops up blur.blur(target); target.dispatchEvent(new (getWindow.getWindow(target)).Event('fileDialog')); // focus fires after the file selector has been closed focus.focus(target); }; } };