* Triggers a given event on an element * * @see https://htmx.org/api/#trigger * * @param {EventTarget|string} elt the element to trigger the event on * @param {string} eventName the name of the event to trigger * @param {any=} detail details for the event * @returns {boolean}
(elt, eventName, detail)
| 2928 | * @returns {boolean} |
| 2929 | */ |
| 2930 | function triggerEvent(elt, eventName, detail) { |
| 2931 | elt = resolveTarget(elt) |
| 2932 | if (detail == null) { |
| 2933 | detail = {} |
| 2934 | } |
| 2935 | detail.elt = elt |
| 2936 | const event = makeEvent(eventName, detail) |
| 2937 | if (htmx.logger && !ignoreEventForLogging(eventName)) { |
| 2938 | htmx.logger(elt, eventName, detail) |
| 2939 | } |
| 2940 | if (detail.error) { |
| 2941 | logError(detail.error) |
| 2942 | triggerEvent(elt, 'htmx:error', { errorInfo: detail }) |
| 2943 | } |
| 2944 | let eventResult = elt.dispatchEvent(event) |
| 2945 | const kebabName = kebabEventName(eventName) |
| 2946 | if (eventResult && kebabName !== eventName) { |
| 2947 | const kebabedEvent = makeEvent(kebabName, event.detail) |
| 2948 | eventResult = eventResult && elt.dispatchEvent(kebabedEvent) |
| 2949 | } |
| 2950 | withExtensions(asElement(elt), function(extension) { |
| 2951 | eventResult = eventResult && (extension.onEvent(eventName, event) !== false && !event.defaultPrevented) |
| 2952 | }) |
| 2953 | return eventResult |
| 2954 | } |
| 2955 | |
| 2956 | //= =================================================================== |
| 2957 | // History Support |
no test coverage detected
searching dependent graphs…