mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
ko.utils.registerEventHandler to native addEventListener
This commit is contained in:
parent
8babd10f69
commit
9014f08f35
6 changed files with 16 additions and 14 deletions
|
|
@ -18,7 +18,7 @@ ko.bindingHandlers['event'] = {
|
||||||
var eventsToHandle = valueAccessor() || {};
|
var eventsToHandle = valueAccessor() || {};
|
||||||
ko.utils.objectForEach(eventsToHandle, eventName => {
|
ko.utils.objectForEach(eventsToHandle, eventName => {
|
||||||
if (typeof eventName == "string") {
|
if (typeof eventName == "string") {
|
||||||
ko.utils.registerEventHandler(element, eventName, function (event) {
|
element.addEventListener(eventName, function (event) {
|
||||||
var handlerReturnValue;
|
var handlerReturnValue;
|
||||||
var handlerFunction = valueAccessor()[eventName];
|
var handlerFunction = valueAccessor()[eventName];
|
||||||
if (!handlerFunction)
|
if (!handlerFunction)
|
||||||
|
|
|
||||||
|
|
@ -21,10 +21,13 @@ ko.bindingHandlers['hasfocus'] = {
|
||||||
var handleElementFocusIn = handleElementFocusChange.bind(null, true);
|
var handleElementFocusIn = handleElementFocusChange.bind(null, true);
|
||||||
var handleElementFocusOut = handleElementFocusChange.bind(null, false);
|
var handleElementFocusOut = handleElementFocusChange.bind(null, false);
|
||||||
|
|
||||||
ko.utils.registerEventHandler(element, "focus", handleElementFocusIn);
|
var registerEventHandler = (event, handler) =>
|
||||||
ko.utils.registerEventHandler(element, "focusin", handleElementFocusIn);
|
element.addEventListener(event, handler);
|
||||||
ko.utils.registerEventHandler(element, "blur", handleElementFocusOut);
|
|
||||||
ko.utils.registerEventHandler(element, "focusout", handleElementFocusOut);
|
registerEventHandler("focus", handleElementFocusIn);
|
||||||
|
registerEventHandler("focusin", handleElementFocusIn);
|
||||||
|
registerEventHandler("blur", handleElementFocusOut);
|
||||||
|
registerEventHandler("focusout", handleElementFocusOut);
|
||||||
|
|
||||||
// Assume element is not focused (prevents "blur" being called initially)
|
// Assume element is not focused (prevents "blur" being called initially)
|
||||||
element[hasfocusLastValue] = false;
|
element[hasfocusLastValue] = false;
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ ko.bindingHandlers['submit'] = {
|
||||||
'init': (element, valueAccessor, allBindings, viewModel, bindingContext) => {
|
'init': (element, valueAccessor, allBindings, viewModel, bindingContext) => {
|
||||||
if (typeof valueAccessor() != "function")
|
if (typeof valueAccessor() != "function")
|
||||||
throw new Error("The value for a submit binding must be a 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 handlerReturnValue;
|
||||||
var value = valueAccessor();
|
var value = valueAccessor();
|
||||||
try { handlerReturnValue = value.call(bindingContext['$data'], element); }
|
try { handlerReturnValue = value.call(bindingContext['$data'], element); }
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ ko.bindingHandlers['textInput'] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var onEvent = (event, handler) =>
|
var onEvent = (event, handler) =>
|
||||||
ko.utils.registerEventHandler(element, event, handler);
|
element.addEventListener(event, handler);
|
||||||
|
|
||||||
onEvent('input', updateModel);
|
onEvent('input', updateModel);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,8 @@ ko.bindingHandlers['value'] = {
|
||||||
var eventsToCatch = new Set;
|
var eventsToCatch = new Set;
|
||||||
var requestedEventsToCatch = allBindings.get("valueUpdate");
|
var requestedEventsToCatch = allBindings.get("valueUpdate");
|
||||||
var elementValueBeforeEvent = null;
|
var elementValueBeforeEvent = null;
|
||||||
|
var registerEventHandler = (event, handler) =>
|
||||||
|
element.addEventListener(event, handler);
|
||||||
|
|
||||||
if (requestedEventsToCatch) {
|
if (requestedEventsToCatch) {
|
||||||
// Allow both individual event names, and arrays of event names
|
// Allow both individual event names, and arrays of event names
|
||||||
|
|
@ -47,9 +49,9 @@ ko.bindingHandlers['value'] = {
|
||||||
elementValueBeforeEvent = ko.selectExtensions.readValue(element);
|
elementValueBeforeEvent = ko.selectExtensions.readValue(element);
|
||||||
ko.utils.setTimeout(valueUpdateHandler, 0);
|
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;
|
var updateFromModel;
|
||||||
|
|
@ -96,7 +98,7 @@ ko.bindingHandlers['value'] = {
|
||||||
var updateFromModelComputed;
|
var updateFromModelComputed;
|
||||||
ko.bindingEvent.subscribe(element, ko.bindingEvent.childrenComplete, () => {
|
ko.bindingEvent.subscribe(element, ko.bindingEvent.childrenComplete, () => {
|
||||||
if (!updateFromModelComputed) {
|
if (!updateFromModelComputed) {
|
||||||
ko.utils.registerEventHandler(element, "change", valueUpdateHandler);
|
registerEventHandler("change", valueUpdateHandler);
|
||||||
updateFromModelComputed = ko.computed(updateFromModel, { disposeWhenNodeIsRemoved: element });
|
updateFromModelComputed = ko.computed(updateFromModel, { disposeWhenNodeIsRemoved: element });
|
||||||
} else if (allBindings.get('valueAllowUnset')) {
|
} else if (allBindings.get('valueAllowUnset')) {
|
||||||
updateFromModel();
|
updateFromModel();
|
||||||
|
|
@ -105,7 +107,7 @@ ko.bindingHandlers['value'] = {
|
||||||
}
|
}
|
||||||
}, null, { 'notifyImmediately': true });
|
}, null, { 'notifyImmediately': true });
|
||||||
} else {
|
} else {
|
||||||
ko.utils.registerEventHandler(element, "change", valueUpdateHandler);
|
registerEventHandler("change", valueUpdateHandler);
|
||||||
ko.computed(updateFromModel, { disposeWhenNodeIsRemoved: element });
|
ko.computed(updateFromModel, { disposeWhenNodeIsRemoved: element });
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
3
vendors/knockout/src/utils.js
vendored
3
vendors/knockout/src/utils.js
vendored
|
|
@ -96,9 +96,6 @@ ko.utils = {
|
||||||
|
|
||||||
setTimeout: (handler, timeout) => setTimeout(handler, timeout),
|
setTimeout: (handler, timeout) => setTimeout(handler, timeout),
|
||||||
|
|
||||||
registerEventHandler: (element, eventType, handler) =>
|
|
||||||
element.addEventListener(eventType, handler, false),
|
|
||||||
|
|
||||||
triggerEvent: (element, eventType) => {
|
triggerEvent: (element, eventType) => {
|
||||||
if (!(element && element.nodeType))
|
if (!(element && element.nodeType))
|
||||||
throw new Error("element must be a DOM node when calling triggerEvent");
|
throw new Error("element must be a DOM node when calling triggerEvent");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue