MCPcopy Create free account
hub / github.com/testing-library/user-event / fireInputEvent

Function fireInputEvent

src/keyboard/shared/fireInputEvent.ts:11–43  ·  view source on GitHub ↗
(
  element: HTMLElement,
  {
    newValue,
    newSelectionStart,
    eventOverrides,
  }: {
    newValue: string
    newSelectionStart: number
    eventOverrides: Partial<Parameters<typeof fireEvent>[1]> & {
      [k: string]: unknown
    }
  },
)

Source from the content-addressed store, hash-verified

9} from '../../utils'
10
11export function fireInputEvent(
12 element: HTMLElement,
13 {
14 newValue,
15 newSelectionStart,
16 eventOverrides,
17 }: {
18 newValue: string
19 newSelectionStart: number
20 eventOverrides: Partial<Parameters<typeof fireEvent>[1]> & {
21 [k: string]: unknown
22 }
23 },
24) {
25 // apply the changes before firing the input event, so that input handlers can access the altered dom and selection
26 if (isContentEditable(element)) {
27 applyNative(element, 'textContent', newValue)
28 } else /* istanbul ignore else */ if (
29 isElementType(element, ['input', 'textarea'])
30 ) {
31 applyNative(element, 'value', newValue)
32 } else {
33 // TODO: properly type guard
34 throw new Error('Invalid Element')
35 }
36 setSelectionRangeAfterInput(element, newSelectionStart)
37
38 fireEvent.input(element, {
39 ...eventOverrides,
40 })
41
42 setSelectionRangeAfterInputHandler(element, newValue, newSelectionStart)
43}
44
45function setSelectionRangeAfterInput(
46 element: Element,

Callers 3

functional.tsFile · 0.90
character.tsFile · 0.90
control.tsFile · 0.90

Calls 5

isContentEditableFunction · 0.90
isElementTypeFunction · 0.90
applyNativeFunction · 0.85

Tested by

no test coverage detected