/
gsam
/
ui-kit-ce
Обзор
Документация
Войти
/
gsam
/
ui-kit-ce
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
packages/utils/src/dispatchChangeEvent/dispatchChangeEvent.ts
33 строки
1 KB
zavyalov.d.o
feat(mentions): добавлен новый компонент Mentions
16 июл 2025, 16:34
16 июл 2025, 16:34
94f44a3
Код
Авторство
О чём код?
/** * Генерирует событие изменения для данного элемента ввода с новым значением. * * Эта функция является обходным решением проблемы, что `React` не вызывает событие изменения, * когда значение элемента ввода изменяется императивно. Эта функция устанавливает * значение элемента ввода, а затем генерирует событие изменения. * * @inner * * @param element Элемент ввода (input или textarea), для которого нужно сгенерировать событие изменения. * @param newValue Новое значение элемента ввода. */ export const dispatchChangeEvent = <TValue extends unknown = unknown>( element: HTMLInputElement | HTMLTextAreaElement, newValue: TValue ): void => { element.setAttribute('value', String(newValue)) const prototype = element instanceof HTMLInputElement ? HTMLInputElement.prototype : HTMLTextAreaElement.prototype const nativeValueSetter = Object.getOwnPropertyDescriptor( prototype, 'value' )?.set nativeValueSetter?.call(element, newValue) const event = new Event('change', { bubbles: true }) element.dispatchEvent(event) }