@finsweet/ts-utils
Version:
Typescript utils for custom Webflow projects.
30 lines (29 loc) • 933 B
JavaScript
import { isHTMLInputElement } from '..';
import { simulateEvent } from '.';
/**
* Sets a value to a FormField element and emits `click`, `input` and `change` Events.
*
* @param element The FormField to update.
* @param value `boolean` for Checkboxes and Radios, `string` for the rest.
*/
export const setFormFieldValue = (element, value) => {
const { type } = element;
const isRadio = type === 'radio';
const isCheckbox = type === 'checkbox';
if (isRadio || isCheckbox) {
if (!isHTMLInputElement(element) ||
typeof value !== 'boolean' ||
value === element.checked ||
(isRadio && value === false)) {
return;
}
element.checked = value;
}
else {
if (element.value === value)
return;
element.value = value.toString();
}
// Emit DOM events
simulateEvent(element, ['click', 'input', 'change']);
};