@apimediaru/driven-event
v1.0.2
Published
Lots of useful stuff
Readme
@apimediaru/driven-event
Обертка над объектом браузерного события. Добавляет возможность отслеживать вызов методов управления поведением по умолчанию и всплытия: stopPropagation, stopImmediatePropagation и preventDefault. Штатными средствами отследить возможно только preventDefault через свойство evt.defaultPrevented.
Используется в Dispatcher для управления возможностью обработки вложенных эффектов.
Установка
npm install @apimediaru/driven-eventAPI
createDrivenEvent(evt: Event): DrivenEvent
import { createDrivenEvent } from '@apimediaru/driven-event';
function compOne(event) {
if (event.target.classList.has('js-stop')) {
event.stopPropagation();
}
}
function compTwo(event) {
if (!event.isPropagationStopped()) {
// Proceed
console.log(event.customProperty);
}
}
function someEventLogic(event) {
event.preventDefault();
compOne(event);
compTwo(event);
}
document.addEventListener('click', (event) => {
someEventLogic(createDrivenEvent(event));
});Структура объекта события
type: string
Тип события
originalEvent: Event
Ссылка на оригинальное событие браузера
timeStamp?: number
Временная метка в милисекундах момента создания события
target
Ссылка на evt.target
currentTarget
Ссылка на evt.currentTarget
preventDefault(): void
Отменить действие бразуера по умолчанию
isDefaultPrevented(): boolean
Возвращает true если действие браузера по умолчанию было прекращено
stopPropagation(): void
Прекратить всплытие события
isPropagationStopped(): boolean
Возвращает true если всплытие было остановлено
stopImmediatePropagation: () => void
Останавливает цепочку вызова событий для последующих обработчиков DOM-элемента
isImmediatePropagationStopped(): boolean
Возвращает true если у экземпляра DrivenEvent был вызыван метод stopImmediatePropagation
simulate(): void
По умолчанию DrivenEvent полностью повторяет логику управления всплытием и действием браузера по умолчанию, однако это поведение можно отключить. Тогда фоном DrivenEvent не будет вызывать стандартные методы, но можно по прежнему отследить были ли вызываны функции у класса-обертки.
