diff --git a/.changeset/green-ads-fold.md b/.changeset/green-ads-fold.md new file mode 100644 index 000000000..5437bd4c2 --- /dev/null +++ b/.changeset/green-ads-fold.md @@ -0,0 +1,5 @@ +--- +'@lion/form-core': patch +--- + +form-core: expose 'mimicUserInput' test-helper diff --git a/packages/form-core/test-helpers/index.js b/packages/form-core/test-helpers/index.js index fcc2d3d72..3b21d5670 100644 --- a/packages/form-core/test-helpers/index.js +++ b/packages/form-core/test-helpers/index.js @@ -1,2 +1,3 @@ export * from './ExampleValidators.js'; export * from './getFormControlMembers.js'; +export * from './mimicUserInput.js'; diff --git a/packages/form-core/test-helpers/mimicUserInput.js b/packages/form-core/test-helpers/mimicUserInput.js new file mode 100644 index 000000000..b11e532e3 --- /dev/null +++ b/packages/form-core/test-helpers/mimicUserInput.js @@ -0,0 +1,16 @@ +// @ts-nocheck +/** + * @param {HTMLElement} formControl + * @param {?} newViewValue + * @param {{caretIndex?:number}} config + */ +export function mimicUserInput(formControl, newViewValue, { caretIndex } = {}) { + formControl.value = newViewValue; // eslint-disable-line no-param-reassign + if (caretIndex) { + // eslint-disable-next-line no-param-reassign + formControl._inputNode.selectionStart = caretIndex; + // eslint-disable-next-line no-param-reassign + formControl._inputNode.selectionEnd = caretIndex; + } + formControl._inputNode.dispatchEvent(new Event('input', { bubbles: true })); +}