From 9014f08f35a4b1bb9a59eb248477187c6bce0363 Mon Sep 17 00:00:00 2001 From: djmaze Date: Tue, 28 Sep 2021 13:38:02 +0200 Subject: [PATCH] ko.utils.registerEventHandler to native addEventListener --- vendors/knockout/src/binding/defaultBindings/event.js | 2 +- .../knockout/src/binding/defaultBindings/hasfocus.js | 11 +++++++---- .../knockout/src/binding/defaultBindings/submit.js | 2 +- .../knockout/src/binding/defaultBindings/textInput.js | 2 +- vendors/knockout/src/binding/defaultBindings/value.js | 10 ++++++---- vendors/knockout/src/utils.js | 3 --- 6 files changed, 16 insertions(+), 14 deletions(-) diff --git a/vendors/knockout/src/binding/defaultBindings/event.js b/vendors/knockout/src/binding/defaultBindings/event.js index 3fbac7d96..010661ead 100644 --- a/vendors/knockout/src/binding/defaultBindings/event.js +++ b/vendors/knockout/src/binding/defaultBindings/event.js @@ -18,7 +18,7 @@ ko.bindingHandlers['event'] = { var eventsToHandle = valueAccessor() || {}; ko.utils.objectForEach(eventsToHandle, eventName => { if (typeof eventName == "string") { - ko.utils.registerEventHandler(element, eventName, function (event) { + element.addEventListener(eventName, function (event) { var handlerReturnValue; var handlerFunction = valueAccessor()[eventName]; if (!handlerFunction) diff --git a/vendors/knockout/src/binding/defaultBindings/hasfocus.js b/vendors/knockout/src/binding/defaultBindings/hasfocus.js index 7e6968056..aa2321983 100644 --- a/vendors/knockout/src/binding/defaultBindings/hasfocus.js +++ b/vendors/knockout/src/binding/defaultBindings/hasfocus.js @@ -21,10 +21,13 @@ ko.bindingHandlers['hasfocus'] = { var handleElementFocusIn = handleElementFocusChange.bind(null, true); var handleElementFocusOut = handleElementFocusChange.bind(null, false); - ko.utils.registerEventHandler(element, "focus", handleElementFocusIn); - ko.utils.registerEventHandler(element, "focusin", handleElementFocusIn); - ko.utils.registerEventHandler(element, "blur", handleElementFocusOut); - ko.utils.registerEventHandler(element, "focusout", handleElementFocusOut); + var registerEventHandler = (event, handler) => + element.addEventListener(event, handler); + + registerEventHandler("focus", handleElementFocusIn); + registerEventHandler("focusin", handleElementFocusIn); + registerEventHandler("blur", handleElementFocusOut); + registerEventHandler("focusout", handleElementFocusOut); // Assume element is not focused (prevents "blur" being called initially) element[hasfocusLastValue] = false; diff --git a/vendors/knockout/src/binding/defaultBindings/submit.js b/vendors/knockout/src/binding/defaultBindings/submit.js index 6a2cf857a..ee744745a 100644 --- a/vendors/knockout/src/binding/defaultBindings/submit.js +++ b/vendors/knockout/src/binding/defaultBindings/submit.js @@ -2,7 +2,7 @@ ko.bindingHandlers['submit'] = { 'init': (element, valueAccessor, allBindings, viewModel, bindingContext) => { if (typeof valueAccessor() != "function") throw new Error("The value for a submit binding must be a function"); - ko.utils.registerEventHandler(element, "submit", event => { + element.addEventListener("submit", event => { var handlerReturnValue; var value = valueAccessor(); try { handlerReturnValue = value.call(bindingContext['$data'], element); } diff --git a/vendors/knockout/src/binding/defaultBindings/textInput.js b/vendors/knockout/src/binding/defaultBindings/textInput.js index 1adc95e9e..aab477c24 100644 --- a/vendors/knockout/src/binding/defaultBindings/textInput.js +++ b/vendors/knockout/src/binding/defaultBindings/textInput.js @@ -49,7 +49,7 @@ ko.bindingHandlers['textInput'] = { }; var onEvent = (event, handler) => - ko.utils.registerEventHandler(element, event, handler); + element.addEventListener(event, handler); onEvent('input', updateModel); diff --git a/vendors/knockout/src/binding/defaultBindings/value.js b/vendors/knockout/src/binding/defaultBindings/value.js index af7535d23..df8bbd06b 100644 --- a/vendors/knockout/src/binding/defaultBindings/value.js +++ b/vendors/knockout/src/binding/defaultBindings/value.js @@ -12,6 +12,8 @@ ko.bindingHandlers['value'] = { var eventsToCatch = new Set; var requestedEventsToCatch = allBindings.get("valueUpdate"); var elementValueBeforeEvent = null; + var registerEventHandler = (event, handler) => + element.addEventListener(event, handler); if (requestedEventsToCatch) { // Allow both individual event names, and arrays of event names @@ -47,9 +49,9 @@ ko.bindingHandlers['value'] = { elementValueBeforeEvent = ko.selectExtensions.readValue(element); ko.utils.setTimeout(valueUpdateHandler, 0); }; - eventName = eventName.substring("after".length); + eventName = eventName.substring(5); } - ko.utils.registerEventHandler(element, eventName, handler); + registerEventHandler(eventName, handler); }); var updateFromModel; @@ -96,7 +98,7 @@ ko.bindingHandlers['value'] = { var updateFromModelComputed; ko.bindingEvent.subscribe(element, ko.bindingEvent.childrenComplete, () => { if (!updateFromModelComputed) { - ko.utils.registerEventHandler(element, "change", valueUpdateHandler); + registerEventHandler("change", valueUpdateHandler); updateFromModelComputed = ko.computed(updateFromModel, { disposeWhenNodeIsRemoved: element }); } else if (allBindings.get('valueAllowUnset')) { updateFromModel(); @@ -105,7 +107,7 @@ ko.bindingHandlers['value'] = { } }, null, { 'notifyImmediately': true }); } else { - ko.utils.registerEventHandler(element, "change", valueUpdateHandler); + registerEventHandler("change", valueUpdateHandler); ko.computed(updateFromModel, { disposeWhenNodeIsRemoved: element }); } }, diff --git a/vendors/knockout/src/utils.js b/vendors/knockout/src/utils.js index 7c66b3335..5f838c8d8 100644 --- a/vendors/knockout/src/utils.js +++ b/vendors/knockout/src/utils.js @@ -96,9 +96,6 @@ ko.utils = { setTimeout: (handler, timeout) => setTimeout(handler, timeout), - registerEventHandler: (element, eventType, handler) => - element.addEventListener(eventType, handler, false), - triggerEvent: (element, eventType) => { if (!(element && element.nodeType)) throw new Error("element must be a DOM node when calling triggerEvent");