Customize behavior for various navigation callbacks, pass KeyboardEvent instance to callback

Refs #264.
This commit is contained in:
Franz Liedke 2016-05-15 23:09:59 +09:00
parent 513c586be3
commit 60e50713e7
No known key found for this signature in database
GPG Key ID: 9A0231A879B055F4
2 changed files with 68 additions and 14 deletions

37
js/forum/dist/app.js vendored
View File

@ -31658,28 +31658,53 @@ System.register('flarum/utils/KeyboardNavigatable', [], function (_export, _cont
babelHelpers.createClass(KeyboardNavigatable, [{
key: 'onUp',
value: function onUp(callback) {
this.callbacks[38] = callback;
this.callbacks[38] = function (e) {
e.preventDefault();
callback(e);
};
return this;
}
}, {
key: 'onDown',
value: function onDown(callback) {
this.callbacks[40] = callback;
this.callbacks[40] = function (e) {
e.preventDefault();
callback(e);
};
return this;
}
}, {
key: 'onSelect',
value: function onSelect(callback) {
this.callbacks[9] = this.callbacks[13] = callback;
this.callbacks[9] = this.callbacks[13] = function (e) {
e.preventDefault();
callback(e);
};
return this;
}
}, {
key: 'onCancel',
value: function onCancel(callback) {
this.callbacks[27] = callback;
this.callbacks[27] = function (e) {
e.stopPropagation();
e.preventDefault();
callback(e);
};
return this;
}
}, {
key: 'onRemove',
value: function onRemove(callback) {
this.callbacks[8] = function (e) {
if (e.target.selectionStart === 0 && e.target.selectionEnd === 0) {
callback(e);
e.preventDefault();
}
};
return this;
}
@ -31704,9 +31729,7 @@ System.register('flarum/utils/KeyboardNavigatable', [], function (_export, _cont
var keyCallback = this.callbacks[event.which];
if (keyCallback) {
keyCallback();
event.stopPropagation();
event.preventDefault();
keyCallback(event);
}
}
}]);

View File

@ -23,7 +23,10 @@ export default class KeyboardNavigatable {
* @return {KeyboardNavigatable}
*/
onUp(callback) {
this.callbacks[38] = callback;
this.callbacks[38] = e => {
e.preventDefault();
callback(e);
};
return this;
}
@ -38,7 +41,10 @@ export default class KeyboardNavigatable {
* @return {KeyboardNavigatable}
*/
onDown(callback) {
this.callbacks[40] = callback;
this.callbacks[40] = e => {
e.preventDefault();
callback(e);
};
return this;
}
@ -53,7 +59,10 @@ export default class KeyboardNavigatable {
* @return {KeyboardNavigatable}
*/
onSelect(callback) {
this.callbacks[9] = this.callbacks[13] = callback;
this.callbacks[9] = this.callbacks[13] = e => {
e.preventDefault();
callback(e);
};
return this;
}
@ -68,7 +77,31 @@ export default class KeyboardNavigatable {
* @return {KeyboardNavigatable}
*/
onCancel(callback) {
this.callbacks[27] = callback;
this.callbacks[27] = e => {
e.stopPropagation();
e.preventDefault();
callback(e);
}
return this;
}
/**
* Provide a callback to be executed when previous input is removed.
*
* This will be triggered by the Backspace key.
*
* @public
* @param {Function} callback
* @return {KeyboardNavigatable}
*/
onRemove(callback) {
this.callbacks[8] = e => {
if (e.target.selectionStart === 0 && e.target.selectionEnd === 0) {
callback(e);
e.preventDefault();
}
};
return this;
}
@ -109,9 +142,7 @@ export default class KeyboardNavigatable {
const keyCallback = this.callbacks[event.which];
if (keyCallback) {
keyCallback();
event.stopPropagation();
event.preventDefault();
keyCallback(event);
}
}
}